|
|
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Понадобилось составить, довольно, сложный (может для меня) запрос, но все мои попытки ни к чему не приводят. Вот решил обратиться за помощью. Имеем 3 таблицы . tableA tableB tableC --------------- ---------------- ----------------- id name id a_id flag id b_id cost 1 name1 1 1 1 1 1 100 2 name2 2 1 1 2 1 150 3 2 0 3 1 50 4 2 0 4 2 900 5 2 1 5 2 700 6 5 600 В результате запроса нужно получить что-такое: query ---------------------------------------------------------------------------- name b_count b_count_flag c_count c_avg_cost c_sum_cost name1 2 2 5 530 1250 name2 2 1 1 600 600 Вообще там еще нужно будет посчитать несколько значений, но суть та же. Ничего лучше, чем сделать куча отдельных запросов в селекте не придумал, но это же ужасное решение, БД очень большая. Очень прошу любой помощи, сам похоже не справлюсь еще долго:) Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 22:33:38 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Не сразу заметил, что съехало, простите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 23:30:39 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
У меня не хватает воображения, чтобы представить, что именно может вызвать трудности в построении этого, ну просто до жути тривиального, запроса... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 09:02:08 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
SUM(b.flag) = 5/1, а должно быть 2/1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:01:05 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Люблю идиотские решения, получаемые в результате рихтовки решений неправильных... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 15:41:42 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
угу.. Интересное решение. Смысла, только в b_count тогда нет, но это уж к ТС:) Вот если б flag был не 1/0, тогда задача таким запросом не решаема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 16:12:41 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Да решение простое, не знаю почему у меня не получилось самому. Спасибо. Только запрос возвращает неправильно в том случае, если у записи в tableB нет ни одной записи в table C, он такие просто пропускает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:12:10 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
То есть количество записей в tableB получается без таких записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 21:13:47 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Evgeniy57То есть количество записей в tableB получается без таких записей. почитайте про LEFT JOIN, типа: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 08:39:50 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=126&tid=1832769]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 417ms |

| 0 / 0 |
