У меня в БД есть 2 таблицы:
--------------
| categories |
------------------------------
id | title | published |
------------------------------
1 | Test1 | 1 |
------------------------------
2 | Test2 | 0 |
------------------------------
3 | Test3 | 1 |
------------------------------
4 | Test4 | 0 |
------------------------------
5 | Test5 | 1 |
------------------------------
и
----------
| images |
------------------------------
id | catid | published |
------------------------------
1 | 1 | 1 |
------------------------------
2 | 5 | 0 |
------------------------------
3 | 2 | 1 |
------------------------------
4 | 4 | 0 |
------------------------------
5 | 3 | 1 |
------------------------------
6 | 4 | 0 |
------------------------------
7 | 3 | 1 |
------------------------------
8 | 2 | 0 |
------------------------------
9 | 5 | 1 |
------------------------------
10 | 1 | 0 |
------------------------------
Мне нужно:
ВЫБРАТЬ всё ИЗ images, ГДЕ published = 1 И catid != (НИКАКОМУ ИЗ всех id ИЗ categories ГДЕ published=0)
Сейчас запрос выглядит так:
SELECT * FROM images WHERE published=1
Как приплести к нему 2-ое необходимое мне условие?
Вроде бы всё выглядит просто, но сегодня до 3 ночи копался - так и не получилось ничего. Думал сделать 2 разных запроса к обоим таблицам:
SELECT id FROM categories WHERE published=0
$result=$db->loadResult();
SELECT * FROM images WHERE published=1 AND catid!=$result
Но каким образом я во 2-ом запросе смогу проверить условие чтобы catid!=
ведь в 1-ом запросе выдался массив, а не одно значение...
Спустя 21 минута, 58 секунд (14.11.2010 - 13:28) vagrand написал(а):
SELECT i.*, c.*
FROM images i
inner join categories c on c.id = i.catid and c.published = 1
WHERE i.published=1
Спустя 1 час, 9 минут, 2 секунды (14.11.2010 - 14:37) Guest написал(а):
vagrand, огромное спасибо!!! Теперь до меня хотя бы дошло, как сложные запросы к БД делать!