SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.01.2012 14:10:26

timur85
Завсегдатай
Зарегистрирован: 09.01.2012
Сообщений: 25

Выбор значений из несколько таблиц

Здравствуйте всем,

Как можно составить запрос:

Каждая строка поле «account»  имеет свою таблицу .И нужно выбрать суммы из соответствующих таблиц.
60 -  table1
61 –  table2
62 –  table3

SELECT id,account,names,IF(account=' 62 ',(SELECT SUM(balance1) FROM  table3 ),0) as sum FROM accounts a;

См. рис1

Заранее благодарен!


Прикрепленные файлы:
Attachment Icon 1.jpg, Размер: 50,451 байт, Скачано: 473

Неактивен

 

#2 12.01.2012 14:23:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выбор значений из несколько таблиц

Вложенный if ?

Неактивен

 

#3 12.01.2012 14:49:46

timur85
Завсегдатай
Зарегистрирован: 09.01.2012
Сообщений: 25

Re: Выбор значений из несколько таблиц

Как правильно написать чтоб каждый поле account сделал выборку из своих таблиц???

Неактивен

 

#4 12.01.2012 22:45:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выбор значений из несколько таблиц

IF(account=' 62 ',(SELECT SUM(balance1) FROM  table3 ),if(account=' 61 ',...))  ?

Неактивен

 

#5 13.01.2012 07:24:07

timur85
Завсегдатай
Зарегистрирован: 09.01.2012
Сообщений: 25

Re: Выбор значений из несколько таблиц

Такой вариант тоже подходит просто у меня будет много account и хотелось бы какую - нибудь функцию создать

Неактивен

 

#6 13.01.2012 07:51:40

timur85
Завсегдатай
Зарегистрирован: 09.01.2012
Сообщений: 25

Re: Выбор значений из несколько таблиц

Такой вариант работает:
SELECT account,names,IF(account=' 62 ',(SELECT SUM(balance1) FROM clients62 ),if(account='71',(Select SUM(balance1) from accable71 ),if(account='51',(Select SUM(balance1) from bank_lst51 ),if(account='52',(Select SUM(balance1) from bank_lst52 ),if(account='62',(Select SUM(balance1) from clients62 ),if(account='70',(Select SUM(balance1) from employs70 ),0))))) ) as balance1    FROM finindex.accounts a;

А если создать таблицу с 2 колонками :

------------------------
'   номер '  имя таблицы '
------------------------'
' 61        ' table1           '
' 62        ' table2           '
' 71        ' table3           '
' ....       '  ........
..................................

Если ли вариант в этом ... Чтобы вместо account='62' поставить account =(Select номер from ...) ?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson