|
|
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Погите плз. разобраться с HAVING. Есть Таблица, содержащая ключевое наименование товара, страну, откуда он пришел и конкретно поставщика. Нужно вывести те товары, которые могут придти от указанного поставщика в Таблице2 и указанной страны в Таблице3 в пределах одного запроса. То есть: (условия: отбираются товары, где есть и страна56 и поставщик47 ) товар1 страна56 поставщик47 товар1 страна13 поставщик84 товар1 страна65 поставщик34 товар1 страна10 поставщик23 товар2 страна56 поставщик90 товар2 страна13 поставщик12 товар2 страна65 поставщик47 товар2 страна10 поставщик23 товар3 страна56 поставщик90 товар3 страна13 поставщик12 товар3 страна65 поставщик55 товар3 страна10 поставщик23 В данном примере нужно выбрать Товар1 и Товар2, но он выбирает только товар1, т.к. работает по принципу WHERE AND, блин. Вот мои наброски, но он выбирает только товар1. SELECT Таблица.Товар FROM (Таблица INNER JOIN Таблица2 ON Таблица.p8 = Таблица2.d8) INNER JOIN Таблица3 ON Таблица.p9 = Таблица3.c9 GROUP BY Таблица.F1, Таблица2.FlagD, Таблица3.FlagC HAVING (((Таблица2.FlagD)=True) AND ((Таблица3.FlagC)=True)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 18:53 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Ну так напиши Or вместо And ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:04 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Тогда товар3 будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:05 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
SELECT distinct Таблица.Товар FROM Таблица where Таблица.страна='страна56' AND Таблица.поставщик='поставщик47' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:11 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
SELECT test.fk_tovar FROM test WHERE (((test.FK_Country)=1)) OR (((test.FK_Supplier)=2)) GROUP BY test.fk_tovar WITH OWNERACCESS OPTION; для таблицы test(fk_tovar,FK_Country,FK_Supplier) если я условие правильно понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:19 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, ошибся, АлексейК прав, условие невнимательно прочитал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:20 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Distinct ничего не дал. Выводится только Товар1. Я знаю способ: SELECT Таблица.Товар FROM Таблица where Таблица.страна='страна56' SELECT Таблица.Товар FROM Таблица where Таблица.поставщик='поставщик47' SELECT Таблица.Товар from первыйзапрос join второйзапрос on первыйзапрос.товар=второйзапрос.товар Но мне нужно это как-нить перестроить енту весч в один запрос ( возможно с использованием HAVING) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:21 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
О пока писал Алексею... 2 Varan: сейчас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:22 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
2 Varan: Мммда... Выводит все товары по принципу ИЛИ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:30 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
теперь понял суть... если в понятном виде то так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:31 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:36 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
2 АлексейК: Я читал здесь же на форуме, что JOIN в ХУДШЕМ случае работает не медленнее . IN по сути является тем же JOIN-ом. Раз уж так, то есть ли смысл отдать предпочтение (в плане скорости) JOIN-у? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:39 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
2 (c)VIG: ООО, дааа. Подскажите, господа, что быстрее будет работать? (Имеется ввиду так... в принципе, на вскидку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:43 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
2 Invisible у программиста почти всегда есть выбор из нескольких решений у каждого есть свои достоинства и недостатки. In работает медленнее join iif + группировка сопоставимо а решения для данной задачи чистыми join я не нашел так как у тебя поставщик и страна могут быть в разных строках. все равно нужен подчиненный запрос... или так как (c)VIG исхитрился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:47 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
2 АлексейК: Спасибо за ответ. Хотел уточнить iif + группировка - сопоставимо по скорости с join? iif + группировка, как в варианте (c)VIG-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 19:55 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
группировка уже не сопоставимо по скорости с join все можно проверить практически залей в свою таблицу тысяч 10 записей и засекай таймер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 20:03 |
|
||
|
Запрос with HAVING
|
|||
|---|---|---|---|
|
#18+
Да... Старею :) Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 20:45 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32541665&tid=1674227]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 516ms |

| 0 / 0 |
