Получить столбец, если строка существует с использованием MySQL? - PullRequest
0 голосов
/ 27 июля 2011

У меня есть две таблицы photo и sale.

photo имеет два столбца id и url.

sale имеет два столбца photoID и status.

Дело в том, что фотография (строка) в таблице photo не обязательно должна иметь запись в таблице sale, поэтому мы не знаем, продается фотография или нет.

т.е.

photo

id | url

1  | http://...

2  | http://...

3  | http://...

sale

photoID | status

1       | 'sold'

3       | 'pending'

Как видите, фотография с id 2 не имеет записив sale таблице.Я хочу извлечь все фотографии из таблицы photo, и если в таблице sale есть запись об этом, я тоже хочу получить информацию status, но в одном запросе.Как мне этого добиться?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 27 июля 2011
   SELECT p.*, s.status 
     FROM photo p
LEFT JOIN sale s 
       ON p.id = s.photoID
0 голосов
/ 03 октября 2011
   SELECT p.*, s.status 
     FROM photo p
          INNER JOIN sale s 
             ON p.id = s.photoID
   UNION
   SELECT p.*, 'not on sale' AS status
     FROM photo p
    WHERE NOT EXISTS (
                      SELECT * 
                        FROM sale s
                       WHERE p.id = s.photoID
                     );
...