|
|
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть две таблицы: T1 |ФИО| Иванов Петров Сидоров T2 |ФИО|ПРЕМИЯ| Иванов|100 Петров|200 Иванов|300 Иванов|100 Нужно получить следующее: |ФИО|СУММА Иванов|500 Петров|200 Сидоров|0 Т.е сделать запрос к первой таблице (с какими-то своими условиями), а затем дополнить суммами из второй таблицы. Подскажите в каком направлении двигаться. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 15:29:18 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481в каком направлении двигаться В направлении RTFM. В данном конкретном случае - по LEFT JOIN, GROUP BY и SUM(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 15:49:34 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Akinaпо LEFT JOIN, GROUP BY и SUM(). Да, это понятно. Но не могу пока построить запрос. Дело в том, что у меня в первом запросе несколько таблиц участвует. Буду соображать дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 07:26:08 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481Буду соображать дальше... Пытаюсь делать так, результат получается обрезанный. Код: sql 1. 2. 3. 4. 5. Если убираю LEFT JOIN - результат хороший, полный. Добавляю - срезается. Как исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 08:41:45 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Т.е то, чего нет в таблице "p" нет и в результирующей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 08:44:26 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481Есть две таблицы sergey170481Пытаюсь делать так, результат получается обрезанный. Код: sql 1. 2. 3. Кто из нас считать не умеет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 09:03:51 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaКто из нас считать не умеет? Согласен. Я для упрощения так писал. Сделал вложенный SELECT и получилось две таблицы. Причина в этом? Не могу разобраться. Вот так ещё делал: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. В итоге получается две таблицы - 'qq' и 'p'? Но в результате всё равно только то, что в 'p' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 09:42:28 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Как будто он GROUP BY выполнил и выдал только то, что сгруппировал, откинув всё остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 09:44:11 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481 , размещайте тут ТОЛЬКО текст запроса, а не код его формирования на хрен знает каком языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 12:13:52 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaТОЛЬКО текст запроса Понял, исправлюсь (Delphi если что). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:24:25 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481Понял Это хорошо. sergey170481исправлюсь Ок, исправляйся. Давай НАСТОЯЩУЮ структуру (в форме проверенных и работающих CREATE TABLE) и тестовое наполнение (в форме проверенных и работающих INSERT), формулируй цель и желаемый результат на именно этих данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:51:42 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Итак. Таблицы уже созданы и их три. 1 - sotrud (ID,FIO...) 2 - tabeli (ID,ID_FIO,...) 3 - premium (ID,ID_FIO,CASH,...) Этот запрос работает: Код: sql 1. 2. 3. 4. возвращает результирующую таблицу как надо. Далее мне нужно в этот результат проставить суммы из третьей таблицы по совпадению ID_FIO. Пробовал так: Код: sql 1. 2. 3. 4. 5. 6. 7. В итоге запрос мне оставляет только те данные, по которым есть информация в третьей таблице (премиум). Вопрос. Как оформить запрос, чтобы все данные из первого запроса (под запроса) оставались на местах, а недостающие заполнялись NULLами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:10:45 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481 [/src] ORDER BY sotrud.FIO) as tbl LEFT JOIN premium p ON p.ID_FIO= tbl .ID_FIO // здесь tbl конечно, ошибся GROUP BY p.ID_FIO [/src] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:13:09 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaДавай НАСТОЯЩУЮ структуру ( в форме проверенных и работающих CREATE TABLE ) и тестовое наполнение ( в форме проверенных и работающих INSERT ), формулируй цель и желаемый результат на именно этих данных . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:14:52 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
sergey170481Вопрос. Как оформить запрос, чтобы все данные из первого запроса (под запроса) оставались на местах, а недостающие заполнялись NULLами?внимательно посмотреть, по полю какой таблицы производится группировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:22:40 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
tanglirвнимательно посмотреть, по полю какой таблицы производится группировка Спасибо вам большое! В очередной раз убеждаюсь, что в большинстве случаев вопрос долго решается по причине неповоротливости сознания. Сидело у меня в голове, что GROUP BY обязательно должен относиться к таблице для которой используется SUM. Самоучка я. Исправил последнюю строчку на: Код: sql 1. и заработало как нужно. Это же так логично и очевидно. Но день не потерян зря - знания получены! Ещё раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 16:00:32 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39134718&tid=1832350]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
346ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 676ms |

| 0 / 0 |
