|
|
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
Есть 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 17:49 |
|
||
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 18:08 |
|
||
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
сработало, спс. но теперь проблемма в том что все зависает. таблицы большие, под 600к записей. как я понимаю оно всеравно делает с трех таблиц 1 огромную, а потом уже дистинктом все убивает. или я не прав, и запрос достаточно не плох, просто из-за такого количества записей нельзя сделать получше запрос? я делаю двумя запросами сейчас, но както это кривовато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 18:22 |
|
||
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
AndriyNiflerпроблемма в том что все зависаетНу ещё бы... AndriyNiflerя делаю двумя запросами сейчас, но както это кривовато.Надо использовать подзапросы для подсчёта и объединяющий запрос для вывода данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 19:01 |
|
||
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
тут скорее уже не по sql вопрос, но у меня сейчас есть выбор: сделать 2 запроса, и данные соеденить уже на бекенде, иди сделать запрос с двумя вложеными(лично мне не нравятся вложенные запросы очень). как грамотней? с одной стороны на бекенд не лучшее решение переносить вещи, которые можно сделать в базе. с другой будет страшнющий запрос(там не 3 таблицы, я упростил. там будет около 8-12 таблиц) по поводу первоначального вопроса - спасибо, все ищет как нужно теперь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 19:59 |
|
||
|
Запрос на соединение 4 таблиц
|
|||
|---|---|---|---|
|
#18+
ОднозначноAndriyNiflerсделать запрос с двумя вложеными Всё остальное хуже. Альтернативный вариант - ХП. AndriyNiflerбудет страшнющий запрос Наплевать. AndriyNiflerлично мне не нравятся вложенные запросы очень А тебе с ними не целоваться. Главное, что это будет оптимально или близко к тому (зависит в основном от того, насколько тебе удастся организовать использование кэша запросов, и удастся ли вообще). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2016, 20:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39340260&tid=1831249]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 480ms |

| 0 / 0 |
