2014-10-24 2 views
0

У меня есть две таблицы, в которых есть информация о транзакции, такая как идентификатор, статус, цена и дата. У меня есть другая таблица, которая хранит количество элементов в этом порядке как отдельные строки. Итак, скажем, транзакция 2 имеет 10 элементов, во второй таблице разных позиций будет 10 строк. То, что я пытаюсь сделать, - это запустить запрос, в котором перечислены транзакции и количество товаров, проданных в этой транзакции. Я предполагаю, что для этого потребуется подсчет второй таблицы, но я не совсем уверен, как это сделать. Речь идет об основном расположении базы данныхЗапрос Mysql с подсчетом на другую таблицу

transaction id, date, price, discount, status 
items: id, transaction_id, item_name, email, date_ordered, hash 

Заранее благодарим за помощь.

ответ

1

Группа по столбцам в таблице transaction, которую вы хотите выбрать. Затем добавить счетчик из пунктов

select t.id, count(i.id) as item_count 
from transaction t 
left join items i on i.transaction_id = t.id 
group by t.id 
+0

Спасибо, что, кажется, работает. Я знаю как ответ, как только смогу – Shaun

0

Вы можете сделать left join на обеих таблицах, как ниже

select t.*, tab.total_order 
from transaction t 
left join 
(
select transaction_id, count(*) as total_order 
from items 
group by transaction_id 
) tab on t.id = tab.transaction_id 
+0

Хм, я понял, что ответ выше возвращает только один результат (так как у него нет группы). Для страницы, на которой я работал, все было хорошо, но на странице im работаю сейчас, мне нужны все строки. Я пытаюсь использовать ваш код, но по какой-то причине он говорит мне, что поля не существуют для tab.transaction_id. – Shaun

+0

@ Шона, ах! это глупо. У вас возникла такая ошибка: 'transaction_id' не был включен в список выбора внутреннего запроса. Попробуйте отредактированный запрос, и теперь он должен работать нормально. – Rahul

Смежные вопросы