[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросом
ApuktaChehov
SELECT order.id, order.cntpt, order.gen_expens, order_productions.prod_name
FROM `order`
LEFT JOIN `order_productions` ON order.id = order_productions.order_id


Возвращает вот такой результат:

Array
(
[id] => 13
[cntpt] => Заказчик
[gen_expens] => 1
[order_cost] => 2
[cur_payment] => 0
[payment_type] => Нал.
[date_form] => 1293089627
[death_line] => 1291323600
[prod_name] => изготовление логотипа
)

Array
(
[id] => 13
[cntpt] => Заказчик
[gen_expens] => 1
[order_cost] => 2
[cur_payment] => 0
[payment_type] => Нал.
[date_form] => 1293089627
[death_line] => 1291323600
[prod_name] => Визитные карточки
)

Как видно все данные повторяются кроме последних. Это потому что в таблице order_productions имеются 2 записи о продуктах, которые относятся к одному заказу order.id.

Вот и я хотел узнать, это нормально, что возвращается такой результат?
На самом деле нужно, что бы вернулся один массив в котором будут два [prod_name].

Вот как то так. Хочу узнать можно ли это средствами sql делать или же на php нужно сливать массивы.

Спасибо!



Спустя 29 минут, 17 секунд (23.12.2010 - 11:37) linker написал(а):
Используй PHP.

Спустя 23 часа, 22 минуты, 4 секунды (24.12.2010 - 10:59) ApuktaChehov написал(а):
Возникла еще одна проблема.

Получается что я делаю выборку. Выбираю 3 заказа. Возвращается 3 результата.
Но если в другой таблице несколько записей для одного заказа, то возвращается не 3 результата, а больше. Но выборку я делаю только по первой таблице!

А как же быть с LIMIT?

Получается что LIMIT применяется ко обоим объединенным таблицам. А нужно чтобы применялся только к первой.

Спустя 58 минут, 14 секунд (24.12.2010 - 11:57) linker написал(а):
LIMIT применяется ко всему результату выборки, а не к чему-то конкретному.

Спустя 5 минут, 38 секунд (24.12.2010 - 12:03) ApuktaChehov написал(а):
Это я понял.

Но мне нужно выбрать, к примеру, 5 строк из первой таблицы и присоединить к этому строки из другой таблицы, где id из первой таблицы, равен id из второй.

Не в цикле же делать эти выборки...

Я не знаю как быть. sad.gif

Спустя 2 часа, 40 минут, 33 секунды (24.12.2010 - 14:43) linker написал(а):
Вложенные запросы тебе помогут.

Спустя 26 минут, 42 секунды (24.12.2010 - 15:10) SlavaFr написал(а):
1) Если в ты используеш mysql, то первый вопрос решается гдето так:
SELECT 
o.id,
o.cntpt,
o.gen_expens,
(
select GROUP_CONCAT(order_productions.prod_name) from `order_productions`
where o.id = order_productions.order_id group by order_productions.order_id) аs prnamen
FROM `order` аs о

Спустя 6 часов, 13 минут, 43 секунды (24.12.2010 - 21:24) ApuktaChehov написал(а):
Спасибо всем большое.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.