Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на соединение 4 таблиц / 6 сообщений из 6, страница 1 из 1
02.11.2016, 17:49
    #39340192
AndriyNifler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
Есть 3 таблицы.

Первая users
id, username
вторая проданые мопеды bikes
id, userid, bikeid
третья проданые автомобили cars
id, userid, carid

Задание получить количество проданых машин и катеров кадому пользователю

сделал запрос:

SELECT u.id, u.username, count(b.id) as bikes, count(c.id) as cars
FROM users u
JOIN bikes b ON b.userid=u.id
JOIN cars c ON c.userid=u.id
group by u.id

но оно собирает все таблицы в одну и выдает посути (количество проданых байков)*(количество проданых машин)

как получить верный результат? например
id name bikes cars
1 Jon 3 2
2 Bob 2 5

Сейчас получаю
id name bikes cars
1 Jon 6 6
2 Bob 10 10
...
Рейтинг: 0 / 0
02.11.2016, 18:08
    #39340210
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
Код: sql
1.
COUNT(DISTINCT id)
...
Рейтинг: 0 / 0
02.11.2016, 18:22
    #39340222
AndriyNifler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
сработало, спс. но теперь проблемма в том что все зависает. таблицы большие, под 600к записей. как я понимаю оно всеравно делает с трех таблиц 1 огромную, а потом уже дистинктом все убивает. или я не прав, и запрос достаточно не плох, просто из-за такого количества записей нельзя сделать получше запрос?

я делаю двумя запросами сейчас, но както это кривовато.
...
Рейтинг: 0 / 0
02.11.2016, 19:01
    #39340260
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
AndriyNiflerпроблемма в том что все зависаетНу ещё бы...
AndriyNiflerя делаю двумя запросами сейчас, но както это кривовато.Надо использовать подзапросы для подсчёта и объединяющий запрос для вывода данных.
...
Рейтинг: 0 / 0
02.11.2016, 19:59
    #39340291
AndriyNifler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
тут скорее уже не по sql вопрос, но у меня сейчас есть выбор: сделать 2 запроса, и данные соеденить уже на бекенде, иди сделать запрос с двумя вложеными(лично мне не нравятся вложенные запросы очень).
как грамотней? с одной стороны на бекенд не лучшее решение переносить вещи, которые можно сделать в базе. с другой будет страшнющий запрос(там не 3 таблицы, я упростил. там будет около 8-12 таблиц)

по поводу первоначального вопроса - спасибо, все ищет как нужно теперь
...
Рейтинг: 0 / 0
02.11.2016, 20:40
    #39340313
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на соединение 4 таблиц
ОднозначноAndriyNiflerсделать запрос с двумя вложеными
Всё остальное хуже.
Альтернативный вариант - ХП.

AndriyNiflerбудет страшнющий запрос
Наплевать.

AndriyNiflerлично мне не нравятся вложенные запросы очень
А тебе с ними не целоваться. Главное, что это будет оптимально или близко к тому (зависит в основном от того, насколько тебе удастся организовать использование кэша запросов, и удастся ли вообще).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на соединение 4 таблиц / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]