|
|
|
left join
|
|||
|---|---|---|---|
|
#18+
Есть таблица sales, в нее записываются все продажи: idsale - номер продажи(PRIMARY KEY), idcust - кому продали, idtovar - что продали Есть таблица client_80 - список клиентов, продажи по которым укладываются в 80% от общих продаж. idcust - PRIMARY KEY Мне нужно выкрутить такой отчет: выбрать все товары, которые никогда не продавались никому из таблицы client_80. Пытаюсь написать так: $sth = $dbh->do("CREATE VIEW ALL_ AS SELECT DISTINCT s.idtovar FROM sales s;"); $sth = $dbh->do("CREATE VIEW top_80 AS SELECT DISTINCT s.idtovar FROM sales s in ner join client_80 c on s.idcust=c.idcust;"); $sth = $dbh->prepare("SELECT ALL_.idtovar FROM ALL_ left join top_80 on ALL_.idt ovar=top_80.idtovar WHERE top_80.idtovar IS NULL;"); К сожалению, результат запроса аналогичен выполнению SELECT idtovar FROM ALL_ SELECT COUNT(idtovar) FROM ALL_ возвращает 940 SELECT COUNT(idtovar) FROM top_80 возвращает 644 Т.е., запрос с 'left join' должен возвращать около 300 значений, а никак не все 944. Подскажите, что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 15:48:27 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Лучше соорудить ХП! Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 16:04:20 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Извини, я плохо знаю SQL. Что такое ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 16:16:21 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Кстати, если убрать из запроса WHERE top_80.idtovar IS NULL выдает похожую на правду табличку. Но мне нужно выбрать только те значения, где выполняется условие IS NULL :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 16:22:06 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Igor Skvortsov Мне нужно выкрутить такой отчет: выбрать все товары, которые никогда не продавались никому из таблицы client_80. Пытаюсь написать так: $sth = $dbh->do("CREATE VIEW ALL_ AS SELECT DISTINCT s.idtovar FROM sales s;"); $sth = $dbh->do("CREATE VIEW top_80 AS SELECT DISTINCT s.idtovar FROM sales s in ner join client_80 c on s.idcust=c.idcust;"); $sth = $dbh->prepare("SELECT ALL_.idtovar FROM ALL_ left join top_80 on ALL_.idt ovar=top_80.idtovar WHERE top_80.idtovar IS NULL;"); Не совсем понял назначение VIEW. Имхо, задача решается одним запросом Select Distinct s.idtovar From sales s left join client_80 c On s.idcust=c.idcust Where c.idcust Is Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 17:02:17 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Нет. Этот запрос отрабатывает некорректно. Допустим есть товар, который продавался и клиентам из таблицы client_80, и всем остальным клиентам тоже продавался. Данный товар будет присутствовать в результате этого запроса , а по условию задачи не должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 17:51:10 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Igor SkvortsovНет. Этот запрос отрабатывает некорректно. Допустим есть товар, который продавался и клиентам из таблицы client_80, и всем остальным клиентам тоже продавался. Данный товар будет присутствовать в результате этого запроса , а по условию задачи не должен.Ничччё не понимаю... Туплю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 18:10:06 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
автор Данный товар будет присутствовать в результате этого запроса , а по условию задачи не должен. Если МП и тупит, то не один... Час назад специально проверил работу запроса в IBE, работало. Уточни или повтори условие задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 18:18:09 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Igor SkvortsovПодскажите, что я делаю не так? Версия сервера какая? Помню баг на эту тему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 18:47:32 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Дошло :-))) Попробуй так Select distinct s.idtovar From sales s where not exists (select c.idcust from client_80 c,sales s1 where c.idcust=s1.idcust) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2004, 18:51:40 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Версия сервера какая? Помню баг на эту тему... Firebird 1.0.2 Коннекчусь через DBI 1.37 :: DBD 0.41 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 10:00:37 |
|
||
|
left join
|
|||
|---|---|---|---|
|
#18+
Igor SkvortsovЕсть таблица sales, в нее записываются все продажи: idsale - номер продажи(PRIMARY KEY), idcust - кому продали, idtovar - что продали Есть таблица client_80 - список клиентов, продажи по которым укладываются в 80% от общих продаж. idcust - PRIMARY KEY Мне нужно выкрутить такой отчет: выбрать все товары, которые никогда не продавались никому из таблицы client_80 Поможет предикат NOT EXISTS: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2004, 10:41:50 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=457&tid=1578045]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 203ms |
| total: | 325ms |

| 0 / 0 |
