![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запрос [D6, MySQL]
Grayver © (2004-01-24 06:42:00)
помогите, пожалуйста, составить запрос для следуюшей ситуации:
существуют 2 таблицы - таблица клиентов и таблица описания использования ими неких товаров. в таблице использования есть поле, характеризующее степень использования товара (от 1-всегда до 7-никогда). из первой таблицы нужно выбрать тех клиентов, которые никогда не используют определенный товар. при этом нужно учесть, что во второй таблице или существует запись со значением использования 7, или записи с данным товаром не существует вовсе.
select table1.* from table1, table2 where table1.id=table2.id and table2.brand=mybrand and (table2.use=7 or ?)
ЮЮ (2004-01-26 02:41:00) [1]
SELECT *
FROM
table1
LEFT JOIN table2 ON (table1.id=table2.id) AND (table2.brand = :mybrand)
Условие ON можно использовать не только как условие соединения table1 и table2, но и как фильтр для присоединяемой таблицы table2. Т.е. в предложенном запросе будет присоединяться на вся таблица table2, а только те записи, которые удовлетворяют второй части условия ( у которых table2.brand = :mybrand)
grayver (2004-01-25 10:27:00) [2]
проблема несколько в другом - как мне задать условие НЕсуществования записи в таблице. Что-то вроде
select * from table1 where not exist (table1.id=table2.id and table2.brand=mybrand)
Lucky_elf (2004-01-24 15:27:00) [3]
Вообще-то лучше видеть SQL таблиц, чтобы можно было что-то составить.
SELECT *
FROM TABLE1
WHERE ID = (SELECT ID
FROM TABLE2
WHERE BRAND = MYBRAND AND USE = 7)
Хотя ничего не гарантирую, что правельно понял вопрос.