저는 잠시 동안 이것을 숙고 해 왔습니다. 기본적으로 테이블에있는 웹 사이트 목록이 있습니다. 이 웹 사이트에는 각각 여러 개의 게시물이 있습니다. 각 게시물은 하나 이상의 다른 웹 사이트에 연결할 수 있습니다. 나는 어디에 어떤 링크가 있는지 기록한다. 특정 게시물에 연결할 수있는 모든 웹 사이트의 목록을 제공하는 쿼리를 생성해야합니다. 몇 가지 규칙이에, 그러나,이 있습니다MySQL은 단방향 연결의 복잡한 관계를 쿼리합니다.
가- 각 게시물에 여러 웹 사이트
- 에 링크 할 수 있습니다 각 포스트는
- 에 다시 연결하는 게시물을하지 않는 웹 사이트 만 링크 할 수 있습니다 각 게시물에 동일하게 연결할 수 있습니다 웹 사이트를 여러 번 열 수 있습니다 (예 : 링크 된 적이 있으면 괜찮습니다).
아래 웹 사이트에는 여러 개의 게시물이 있습니다. 이제 http://img140.imageshack.us/img140/815/emptyd.jpg
, 나는 A의 가능한 모든 링크가 추가하는 경우 :
http://img834.imageshack.us/img834/4931/alinks.jpg
그러나 그들에 연결되어 있기 때문에 지금 다른 사이트, A를 다시 연결할 수 없다 (규칙 2). 무슨 C를 연결할 수 아래 참조 : 그래서
http://img39.imageshack.us/img39/273/clinks.jpg
을 지금 A 또는 C 링크가 다시 링크 할 수 없습니다 아무것도이 다른 각각의 사이트에 옵션을 낮 춥니 다. 모든 웹 사이트가 모든 가능한 조합으로 연결되는 것은 아니며 쿼리에서 돌아 오는 조합 만 필요하다는 것을 기억하는 것이 중요합니다. 이제 형태를 갖추기 시작하고있다 D and G linking http://img689.imageshack.us/img689/7140/dglinks.jpg
: 나는 G와 D에서 링크를 추가 한 다음은 보면, 이들은 그들이 생산 그냥 가능하다는 것을 모든 가능한 링크되지 않습니다. 많은 웹 사이트가 H에 링크되어 있으므로 H 옵션을 연결하는 데 제한이 있습니다. 사실 그것은 F, B, E 및 그 자체에만 연결할 수 있습니다 (규칙 4).
저는 게으르지 않고 저에게 질문을 보내달라고 요청하는 것이 아닙니다. 나는 이것을 시작하고 어디서부터 시작해야할지 확신이 없도록 오랜 시간을 보냈습니다. 나는 그것의 느낌
SELECT t1.* , t2.*
FROM test_posts t1, test_posts as t2
WHERE
t1.post_id != t2.post_id
ORDER BY
t1.post_id, t2.post_id;
을 : 내가 가입 크로스를 사용하여 모든 결과에 가까운 무언가를 생산할 수 있었다 http://pastie.org/1506715
: 여기
는 일부 샘플 데이터 및 테이블 구조에 대한 링크입니다 아주 가깝지만, 나는 거기에 있지 않습니다. 하위 쿼리와 함께 NOT EXISTS 절을 사용해야한다고 생각하지만 정확하게 필요한 부분은 확실하지 않습니다.
나는 제공된 데이터에 대해 테스트를 실시하여 올바른 결과를 얻었습니다. –
테스트 데이터와 라이브 데이터에서 작동하는 것으로 보입니다. 구현하고 어떻게 진행되는지 살펴 보겠습니다.진지하게, 그것을 볼 시간을내어 주셔서 대단히 감사합니다. 너무 쉽기는하지만, 실제로는 그렇지 않습니다. – Mike
예, 간단하게 참여할 수있을 것이라고 생각했지만, 게임을 한 후에는 할 수 없다는 것을 깨달았습니다. 나는 SQL 전문가가 아니지만, NOT IN을 필요로하기 때문에 그게 내가 생각해 냈다. –