powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на соединение 4 таблиц
6 сообщений из 6, страница 1 из 1
Запрос на соединение 4 таблиц
    #39340192
AndriyNifler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 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
Запрос на соединение 4 таблиц
    #39340210
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
COUNT(DISTINCT id)
...
Рейтинг: 0 / 0
Запрос на соединение 4 таблиц
    #39340222
AndriyNifler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сработало, спс. но теперь проблемма в том что все зависает. таблицы большие, под 600к записей. как я понимаю оно всеравно делает с трех таблиц 1 огромную, а потом уже дистинктом все убивает. или я не прав, и запрос достаточно не плох, просто из-за такого количества записей нельзя сделать получше запрос?

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

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

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

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


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