powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сложные запросы используя связи двух таблиц
21 сообщений из 21, страница 1 из 1
сложные запросы используя связи двух таблиц
    #39941177
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы
Структура таблицы dohod2005:
+----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | | auto_increment |
| INN | char(13) | NO | | | |
| NameORG | char(20) | NO | | | |
| ID_D2005 | int(11) | NO | | | |
| NameRab | char(25) | NO | | | |
+----------+----------+------+-----+---------+----------------+
Структура таблицы dohmes:
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| ID_D2005 | int(11) | NO | | | |
| nommes | char(2) | NO | | 01 | |
| summes | int(11) | NO | | | |
| koddoh | int(11) | NO | | | |
+----------+--------------+------+-----+---------+----------------+

ID_D2005 - поле связи с таблицей dohod2005;


dohod2005
+----+--------------+-------------+----------+---------------+
| ID | INN | NameORG | ID_D2005 | NameRab |
+----+--------------+-------------+----------+---------------+
| 1 | 7107547812 | Perspectiva | 7223 | Peterson |
| 2 | 7107547812 | Perspectiva | 7226 | Jaramush |
| 3 | 7107547812 | Perspectiva | 7231 | Sabler |
| 4 | 45623411225 | BlackNoise | 7267 | Peterson |
| 5 | 45623411225 | BlackNoise | 8001 | Karlson |
| 6 | 45623411225 | BlackNoise | 8011 | Svenson |
| 7 | 45623411225 | BlackNoise | 8061 | Shneerson |
| 8 | 680987345515 | Modos | 1002 | Navuhodonosor |
| 9 | 680987345515 | Modos | 1012 | Plumkin |
| 10 | 680987345515 | Modos | 1014 | Solomonson |
| 11 | 680987345515 | Modos | 1035 | Shulmanson |
+----+--------------+-------------+----------+---------------+
dohmes
summes полученная сумма, koddoh - код дохода: 2000 - зарплата, 2200-премия, 2500-мат.помощь.
+----+----------+--------+--------+--------+
| ID | ID_D2005 | nommes | summes | koddoh |
+----+----------+--------+--------+--------+
| 1 | 7223 | 01 | 1000 | 2000 |
| 2 | 7223 | 02 | 1100 | 2000 |
| 3 | 7231 | 03 | 1200 | 2000 |
| 4 | 7231 | 03 | 200 | 2200 |
| 5 | 7267 | 04 | 1300 | 2000 |
| 6 | 7267 | 05 | 1400 | 2000 |
| 7 | 7226 | 01 | 500 | 2000 |
| 8 | 7226 | 02 | 600 | 2000 |
| 9 | 8001 | 03 | 700 | 2500 |
| 10 | 1012 | 04 | 800 | 2000 |
| 11 | 1012 | 05 | 900 | 2000 |
| 12 | 8011 | 08 | 2900 | 2000 |
| 13 | 8011 | 02 | 2800 | 2000 |
| 14 | 1002 | 02 | 290 | 2000 |
| 15 | 1002 | 05 | 190 | 2000 |
| 16 | 1014 | 02 | 1200 | 2000 |
| 17 | 1014 | 03 | 1400 | 2000 |
| 18 | 1014 | 04 | 1600 | 2000 |
| 19 | 1014 | 06 | 1800 | 2000 |
| 20 | 1035 | 07 | 1800 | 2200 |
+----+----------+--------+--------+--------+

Создайте следующие запросы:
Определите суммарную заработную плату каждого работника
SELECT A.NameORG, A.NameRab, IF(koddoh=2000, SUM(B.Summes), Null) as sumall
FROM dohod2005 as A LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005 GROUP BY A.ID_D2005 ORDER BY A.NameORG;

ошибка в запросе зарплата Sabler считается как 1400 почему плюсуются 200р премиальных незнаю.

Найти всех работников ни разу не получивших зарплату:
SELECT A.NameRab FROM dohod2005 as A LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005
WHERE NOT ((A.ID_D2005=B.ID_D2005) AND (koddoh=2000) AND (summes>0)) ORDER BY A.NameRab;

ошибка запрос не работает вместо Shneerson выдаёт Sabler
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941180
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relect,

Код создания двух таблиц

Create database UserLogin;
USE UserLogin;

Create table dohod2005
(ID int(11) auto_increment primary key not null,
INN char(13) not null,
NameORG char(20) not null,
ID_D2005 int(11) not null,
NameRab char(25) not null);

Create table dohmes
(ID int(11) auto_increment primary key,
ID_D2005 int(11) not null,
Nommes char(2) default ‘01’ not null,
Summes int(11) not null,
Koddoh int(11) not null);

Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (1,’7107547812’,’Perspectiva’, 7223,’Peterson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (2,’7107547812’,’Perspectiva’, 7226,’Jaramush’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (3,’7107547812’,’Perspectiva’, 7231,’Sabler’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (4,’45623411225’,’BlackNoise’, 7267,’Peterson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (5,’45623411225’,’BlackNoise’, 8001,’Karlson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (6,’45623411225’,’BlackNoise’, 8011,’Svenson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (7,’45623411225’,’BlackNoise’, 8061,’Shneerson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (8,’680987345515’,’Modos’, 1002,’Navuhodonosor’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (9,’680987345515’,’Modos’, 1012,’Plumkin’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (10,’680987345515’,’Modos’, 1014,’Solomonson’);
Insert dohod2005(ID, INN, NameORG, ID_D2005, NameRab)
values (11,’680987345515’,’Modos’, 1035,’Shulmanson’);

Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (1,7223,’01’,1000,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (2,7223,’02’,1100,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (3,7231,’03’,1200,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (4,7231,’03’,200,2200);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (5,7267,’04’,1300,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (6,7267,’05’,1400,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (7,7226,’01’,500,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (8,7226,’02’,600,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (9,8001,’03’,700,2500);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (10,1012,’04’,800,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (11,1012,’05’,900,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (12,8011,’08’,2900,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (13,8011,’02’,2800,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (14,1002,’02’,290,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (15,1002,’05’,190,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (16,1014,’02’,1200,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (17,1014,’03’,1400,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (18,1014,’04’,1600,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (19,1014,’06’,1800,2000);
Insert dohmes(ID, ID_D2005, nommes, summes, koddoh)
values (20,1035,’07’,1800,2200);

...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941184
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941185
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

со вторым запросом неправельно
WHERE B.ID_D2005 IS NULL -- нет связанных записей.
Cвязанные записи могут быть, по koddoh может быть 2200 премия, или 2500 - мат.помощь.

В первом не отображены значения Null.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941211
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

SELECT A.NameORG, A.NameRab,
IF(koddoh=2000, SUM(B.Summes), Null) as sumall
FROM dohod2005 as A LEFT JOIN dohmes as B ON
A.ID_D2005=B.ID_D2005
GROUP BY A.ID_D2005
ORDER BY A.NameORG;

вот весь запрос работает верно, нули выводит, одного не пойму почему Sabler считает 1400 вместо 1200,
то есть прибавляет 200р из koddoh=2200(премия).
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941212
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не вопрос...
fiddle .
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941213
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relect
весь запрос работает верно
Запрос по сути неверный. Включите ONLY_FULL_GROUP_BY, чтобы не писать такой недетерминированной ерунды... вернее, чтобы не говорить, что оно вообще способно работать.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941234
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Relect
весь запрос работает верно
Запрос по сути неверный. Включите ONLY_FULL_GROUP_BY, чтобы не писать такой недетерминированной ерунды... вернее, чтобы не говорить, что оно вообще способно работать.


Код: sql
1.
2.
3.
4.
5.
6.
7.
# Найти всех работников ни разу не получивших зарплату:
SELECT DISTINCT A.NameRab 
FROM dohod2005 as A 
LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005
                     AND B.koddoh = 2000 # связывать только зарплаты
WHERE B.ID_D2005 IS NULL # нет связанных записей
ORDER BY A.NameRab;


работает.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
# Определите суммарную заработную плату каждого работника
SELECT A.NameORG, 
       A.NameRab, 
       SUM(B.Summes) as sumall
FROM dohod2005 as A 
LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005 
                     AND B.koddoh=2000 # связывать ТОЛЬКО зарплаты
GROUP BY A.NameORG, 
         A.NameRab 
ORDER BY A.NameORG;


работает, а как удалось вывести null? Большое спасибо.
А можете ещё составить запрос:

Найти все организации в которых не менее 50% работников получали в течении не менее чем 2-х месяцев зарплату не более 1000 рублей.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941270
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Relect
А можете ещё составить запрос:
А диплом тоже я получать буду?
Запрос-то попроще предыдущих будет, пусть и длиннее.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941610
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Relect
А можете ещё составить запрос:
А диплом тоже я получать буду?
Запрос-то попроще предыдущих будет, пусть и длиннее.


да нет это тест для аттестации инвалидов по mysql/

Ну начать запрос стоит так
SELECT *
FROM dohod2005 as A
LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005

а как дальше делать выборку я не пойму чтобы не уменьшалось количество работников, для дальнейшего сравнения >50?
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941629
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Relect
А можете ещё составить запрос:
А диплом тоже я получать буду?
Запрос-то попроще предыдущих будет, пусть и длиннее.


Определите в каждой организации работника получившего наибольшую суммарную заработную плату за весь период работы.

Код: sql
1.
2.
3.
4.
5.
6.
SELECT A.NameORG, A.NameRab,
SUM(B.Summes) as sumall 
FROM dohod2005 as A LEFT JOIN dohmes as B ON A.ID_D2005=B.ID_D2005
                                   AND B.koddoh = 2000 # связывать только зарплаты
 GROUP BY A.NameORG, A.NameRab
 ORDER BY A.NameORG



Вопрос как из этого запроса выбрать максимальные и отсеять нули?
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39941976
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Relect
А можете ещё составить запрос:
А диплом тоже я получать буду?
Запрос-то попроще предыдущих будет, пусть и длиннее.


Найти все организации в которых не менее 50% работников получали в течении не менее чем 2-х месяцев зарплату не более 1000 рублей.

SELECT NameORG FROM dohod2005 as T1 GROUP BY NameORG HAVING count(*) <=
(SELECT 2*count(*) FROM dohod2005 WHERE ID_D2005 IN
(SELECT ID_D2005 FROM dohmes WHERE (summes<=1000) AND (koddoh=2000)
GROUP BY ID_D2005 HAVING count(*)>1)
AND NameORG = T1.NameORG GROUP BY NameORG);
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942139
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Akina#22106222]
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Определите в каждой организации работника получившего наибольшую суммарную заработную плату за весь период работы.

Select A.NameORG, A.NameRab, B.MAX(summax)
FROM dohod2005 as A
LEFT JOIN
(Select ID_D2005, SUM(summes) as summax FROM dohmes WHERE koddoh=2000
GROUP BY ID_D2005) as B ON A.ID_D2005 IN=B. ID_D2005
GROUP BY A.NameORG
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942140
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Определить в каждой организации работника получившего наибольшую суммарную заработную плату за весь период работы.

Код: sql
1.
2.
3.
4.
5.
6.
7.
Select A.NameORG, A.NameRab, B.MAX(summax) 
FROM dohod2005 as A
LEFT JOIN
          (Select ID_D2005, SUM(summes) as summax FROM dohmes WHERE koddoh=2000
GROUP BY ID_D2005) 
               as B ON A.ID_D2005 IN=B. ID_D2005
GROUP BY A.NameORG



#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=B. ID_D2005 GROUP BY A.NameORG LIMIT 0, 30' at line 4
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942160
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relect
Код: sql
1.
IN=B.

Что это за конструкция?
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942224
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
Relect
Код: sql
1.
IN=B.

Что это за конструкция?

Определите в каждой организации работника получившего наибольшую суммарную заработную плату за весь период работы.
Код: sql
1.
2.
3.
4.
5.
Select A.NameORG, A.NameRab, MAX(B.summax) as summax
FROM dohod2005 as A
LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes WHERE koddoh=2000
GROUP BY ID_D2005) as B ON A.ID_D2005=B.ID_D2005
GROUP BY A.NameORG


теперь работает, но неверно выводит A.NameRab
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942737
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Relect
как удалось вывести null?
Дык он сам вывелся... LEFT JOIN же ж...

Relect
А можете ещё составить запрос:
А диплом тоже я получать буду?
Запрос-то попроще предыдущих будет, пусть и длиннее.

C этим запросом разобрался:
Найти все организации в которых не менее 50% работников получали в течении не менее чем 2-х месяцев зарплату не более 1000 рублей:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT NameORG FROM dohod2005 as T1 GROUP BY NameORG HAVING count(*) <=
(SELECT 2*count(*) 
FROM dohod2005 WHERE ID_D2005 IN
(SELECT ID_D2005 FROM dohmes WHERE (summes<=1000) AND (koddoh=2000) 
GROUP BY ID_D2005 HAVING count(*)>1)    # получали зарплату не менее 2х месяцев
AND NameORG = T1.NameORG GROUP BY NameORG);



А вот как получить запрос: Определите в каждой организации работника получившего наибольшую суммарную заработную плату за весь период работы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t.NameORG, t.NameRab, t.summax
FROM (Select A.NameORG, A.NameRab, summax
FROM dohod2005 as A LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS B WHERE koddoh=2000 GROUP BY B.ID_D2005) ON A.ID_D2005=B.ID_D2005)) 
as t JOIN
 	(Select C.NameORG, C.NameRab, MAX(D.summax) as msummax
FROM dohod2005 as C LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS D WHERE koddoh=2000 GROUP BY D.ID_D2005)  GROUP BY B.NameORG) as t1  
ON t.NameRab=t1.NameRab AND t.summax = t1.msummax;


ошибка #1248 - Every derived table must have its own alias
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942835
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relect
Код: sql
1.
LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS B WHERE koddoh=2000 GROUP BY B.ID_D2005)

Нужен алиас для подзапроса.
Relect
Код: sql
1.
LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS D WHERE koddoh=2000 GROUP BY D.ID_D2005)

Нужен алиас для подзапроса и условие соединения.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942861
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
Relect
Код: sql
1.
LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS B WHERE koddoh=2000 GROUP BY B.ID_D2005)

Нужен алиас для подзапроса.
Relect
Код: sql
1.
LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes AS D WHERE koddoh=2000 GROUP BY D.ID_D2005)

Нужен алиас для подзапроса и условие соединения.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t.NameORG, t.NameRab, t.summax
FROM (Select A.NameORG, A.NameRab, K.summax
FROM dohod2005 as A LEFT JOIN (Select ID_D2005, SUM(summes) as summax 
FROM dohmes AS B WHERE koddoh=2000 GROUP BY B.ID_D2005) ON A.ID_D2005=B.ID_D2005) as K)
as t JOIN
    (Select C.NameORG, C.NameRab, MAX(L.summax) as msummax
FROM dohod2005 as C LEFT JOIN (Select ID_D2005, SUM(summes) as summax 
FROM dohmes AS D WHERE koddoh=2000 GROUP BY D.ID_D2005) ON A.ID_D2005=B.ID_D2005) as L GROUP BY B.NameORG) as t1 
ON t.NameRab=t1.NameRab AND t.summax = t1.msummax;


ошибка таже: #1248 - Every derived table must have its own alias, условие соединение указано ON A.ID_D2005=B.ID_D2005
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942887
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relect
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT t.NameORG, t.NameRab, t.summax
FROM (Select A.NameORG, A.NameRab, K.summax
FROM dohod2005 as A LEFT JOIN (Select ID_D2005, SUM(summes) as summax 
FROM dohmes AS B WHERE koddoh=2000 GROUP BY B.ID_D2005)  alias  ON A.ID_D2005=B.ID_D2005) as K)
as t JOIN
    (Select C.NameORG, C.NameRab, MAX(L.summax) as msummax
FROM dohod2005 as C LEFT JOIN (Select ID_D2005, SUM(summes) as summax 
FROM dohmes AS D WHERE koddoh=2000 GROUP BY D.ID_D2005)  alias  ON A.ID_D2005=B.ID_D2005) as L GROUP BY B.NameORG) as t1 
ON t.NameRab=t1.NameRab AND t.summax = t1.msummax;


И соответственно условие связывания после алиаса... косоватенькое.
...
Рейтинг: 0 / 0
сложные запросы используя связи двух таблиц
    #39942929
Relect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ВСЁ! Заработало! Спасибо.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT t.NameOrg, t.NameRab, t.summax
FROM 
    (Select A.NameORG, A.NameRab, B.summax
     FROM dohod2005  AS A
     LEFT JOIN (Select ID_D2005, SUM(summes) as summax FROM dohmes WHERE koddoh=2000   
     GROUP BY dohmes.ID_D2005) AS B ON A.ID_D2005=B.ID_D2005)   
as t
JOIN 
    (Select B.NameOrg, MAX(table_sum.summax) as msummax
     FROM dohod2005 as B  
     LEFT JOIN (Select C.ID_D2005, SUM(C.summes) as summax FROM dohmes as C WHERE    
     koddoh=2000  GROUP BY C.ID_D2005) as table_sum ON B.ID_D2005=table_sum.ID_D2005 
                                                                                   GROUP BY NameORG) 
as t1
ON t.NameOrg = t1.NameOrg AND t.summax = t1.msummax ORDER BY t.NameOrg;
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сложные запросы используя связи двух таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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