|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
вообщем нужно выбрать одну фамилию и суммы связанные с этой фамилией из 2х других таблиц следующий запрос перебирает все комбинации записей из tbZarpl и tbPay с одинаковыми idfio: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
как еслибы я делал: Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4.
подскажите пожалуста, чет совсем не дружу с SQL'ем ( ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 12:03 |
|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 12:37 |
|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
спасибо тебе заяц, но я думаю с под запросами я бы и сам решил эту задачу, тут проблема в том что я непонимаю как тут обойтись одним запросом, возможно что то не так с группировками? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 14:18 |
|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
Ты вообще-то представляешь как работает объединение по JOIN? В качестве модели можно представить себе такую схему: 1. Берется первая запись из первой таблицы 2. Берется первая запись удовлетворяющая условию объединения из второй таблицы по значению текущей записи первой таблицы 3. Берется первая запись удовлетворяющая условию объединениа из третьей таблицы по значению текущих записей первой и второй таблиц (сопоставлена с первой записью из второй таблицы) 4. Берется вторая запись удовлетворяющая условию объединения из третьей таблицы по значению текущих записей первой и второй таблиц (также сопоставлена с первой записью из второй таблицы) 5... Когда закончились записи удовлетворяющие условию объединения в третьей таблице по текущем записям первой и второй таблицы берем вторую запись из второй таблицы и повторяем цикл Грубо говоря, это можно представить как вложенные циклы перебора всех записей по каждой таблице. Внешний цикл - перебор записей по первой таблице, в него вложен цикл перебора записей по второй таблице, а еще глубже вложен цикл перебора записей по третьей таблице. Предположим, в таблице tbZarpl есть 2 записи с кодом idfio = 1, а в таблице tbPay есть 3 записи с кодом idfio = 1. В результате, для idfio = 1 получим 2*3 = 6 записей в результирующей выборке. Потом выполняется суммирование по этим 6 записям. Другими словами, каждую запись из таблицы tbZarpl ты используешь столько раз, сколько записей с тем же значением idfio есть в таблице tbPay и наоборот. LEFT JOIN, в данном случае, мало что изменит. Оно определяет поведение только в том случае, когда для указанного значения idfio нет записей в таблицах tbZarpl или tbPay. Поэтому, без подзапросов данная задача не решается. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 16:33 |
|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
вот еще вариант, если уж так хочется приджоинить Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2008, 16:44 |
|
немогу построить простой запрос
|
|||
---|---|---|---|
#18+
zloyGamerвообщем нужно выбрать одну фамилию и суммы связанные с этой фамилией из 2х других таблиц следующий запрос перебирает все комбинации записей из tbZarpl и tbPay с одинаковыми idfio: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
А результата запроса привести можете? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2008, 17:15 |
|
|
start [/forum/topic.php?fid=41&fpage=152&tid=1587461]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 501ms |
0 / 0 |