Перекресный запрос
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
Перекресный запрос
Please, help, люди...
Можно ли создать каким-либо образом перекресный запрос, как это делается в Access.
Можно ли создать каким-либо образом перекресный запрос, как это делается в Access.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
Ну что такое join я вроде как понял,
а пример перкресного запроса:
арт1 - прайс1 - цена1
арт1 - прайс2 - цена2
арт1 - прайс3 - цена3
арт2 - прайс1 - цена4
арт2 - прайс3 - цена5
...
и если это всё можно было перевести в таблицу:
прайс1 прайс2 прайс3
арт1 цена1 цена2 цена3
арт2 цена4 цена5
то в Access это называется перекресный запрос.
так можно ли сконструировать такой запрос?
а пример перкресного запроса:
арт1 - прайс1 - цена1
арт1 - прайс2 - цена2
арт1 - прайс3 - цена3
арт2 - прайс1 - цена4
арт2 - прайс3 - цена5
...
и если это всё можно было перевести в таблицу:
прайс1 прайс2 прайс3
арт1 цена1 цена2 цена3
арт2 цена4 цена5
то в Access это называется перекресный запрос.
так можно ли сконструировать такой запрос?
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
Например, вот так:
Но это при условии, что прайсы у тебя в отдельных таблицах.
Код: Выделить всё
SELECT
A.ID,
A.ART_NAME
P1.ART_PRICE,
P2.ART_PRICE,
P3.ART_PRICE
FROM
ARTICUL A
LEFT JOIN PRICE1 P ON A.ID = P1.ID_ART
LEFT JOIN PRICE2 P ON A.ID = P2.ID_ART
LEFT JOIN PRICE3 P ON A.ID = P3.ID_ART
ORDER BY
A.ART_NAME
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
если бы это было в разных таблицах, то проблем бы не было, и здесь я с вами категорически согласен.
вопрос в том, что делать, если это одна таблица:
артикулы---тип прайса------Цена
арт1--------прайс1-----------цена1
арт1--------прайс2-----------цена2
арт1--------прайс3-----------цена3
арт2--------прайс1-----------цена4
арт2--------прайс3-----------цена5 и.т.д
вопрос в том, что делать, если это одна таблица:
артикулы---тип прайса------Цена
арт1--------прайс1-----------цена1
арт1--------прайс2-----------цена2
арт1--------прайс3-----------цена3
арт2--------прайс1-----------цена4
арт2--------прайс3-----------цена5 и.т.д
Прочитай здесь:
http://forum.ibase.ru/phpBB2/viewtopic. ... hlight=add
http://forum.ibase.ru/phpBB2/viewtopic. ... hlight=add
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Коллега, 3 таблицы и все под одним псевдонимомCyberMax писал(а):Например, вот так:Но это при условии, что прайсы у тебя в отдельных таблицах.Код: Выделить всё
SELECT A.ID, A.ART_NAME P1.ART_PRICE, P2.ART_PRICE, P3.ART_PRICE FROM ARTICUL A LEFT JOIN PRICE1 P ON A.ID = P1.ID_ART LEFT JOIN PRICE2 P ON A.ID = P2.ID_ART LEFT JOIN PRICE3 P ON A.ID = P3.ID_ART ORDER BY A.ART_NAME

что делать, если это одна таблица:
Дочитать доку до фразы group by, далее читать с удвоенным вниманием. Потом либо вложенные запросы либо приджойнить эту таблицу саму на себя 4 раза.
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
Вот, вы люди умные, так подскажите мне дураку, как сделать так, что бы в этом таком хорошем перекресном запросе прога выводила только один артикул.
пишу я вот такой запрос:
и он выводит каждый артикул по три раза.
конечно можно написать заместо
но так делать нельзя, поскольку у меня нет ни одного такого прайса, в котором есть все цены, а хотелось б, что бы выводились все артикулы.
подскажите пожалуйста, что делать :?:
пишу я вот такой запрос:
Код: Выделить всё
select ar.articul, ar.price_kind, pr1.price_rub, pr1.price_kind, pr2.price_rub, pr2.price_kind,
pr3.price_rub, pr3.price_kind
from disccard ar
left join disccard pr1 on ar.articul = pr1.articul
left join disccard pr2 on ar.articul = pr2.articul
left join disccard pr3 on ar.articul = pr3.articul
inner join pricekind pr on pr.id_pricekind = ar.price_kind
where
pr1.price_kind = 0
and pr2.price_kind = 3
and pr3.price_kind = 575
and ar.price_kind in (0, 3, 575)
конечно можно написать заместо
Код: Выделить всё
and ar.price_kind in (0, 3, 575)
Код: Выделить всё
and ar.price_kind = 0
но так делать нельзя, поскольку у меня нет ни одного такого прайса, в котором есть все цены, а хотелось б, что бы выводились все артикулы.
подскажите пожалуйста, что делать :?:
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
-
- Сообщения: 21
- Зарегистрирован: 02 авг 2006, 11:28
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05