Mysql - Показать несвязанные результаты между двумя таблицами из таблицы 1 - PullRequest
0 голосов
/ 09 августа 2011

У меня есть 2 таблицы:

таблица A:

pid|filename|date
-----------------
1  |file1   |2009
2  |file2   |2009
3  |file3   |2009
4  |file4   |2009

таблица B:

pid|filename
------------
1  |filex1
1  |filex2
2  |filex3
2  |filex4

результат, который я хочу получить:

pid|filename|date
-----------------
3  |file3   |2009
4  |file4   |2009

это означает, что он должен показывать только те строки таблицы A, которые не имеют отношения ко второй таблице.

Я начал с этого кода, но он не работал!

$do_q=mysql_query("SELECT *
  FROM A LEFT JOIN B
         ON (A.pid <> B.pid)");
    while($row = mysql_fetch_array($do_q)){
        echo $row['pid'];
        echo $row['filename'];
        echo $row['date'];
    }

Спасибо.

Ответы [ 3 ]

1 голос
/ 09 августа 2011
SELECT A.*
    FROM A
        LEFT JOIN B
            ON A.pid = B.pid
    WHERE b.pid IS NULL
0 голосов
/ 09 августа 2011
SELECT
 *
FROM tableA A
WHERE(NOT EXISTS(SELECT 1 FROM tableB B WHERE B.pid = A.pid))
0 голосов
/ 09 августа 2011

Я думаю, что это должно работать для вас:

SELECT * 
FROM A
WHERE pid NOT IN (SELECT pid from B)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...