powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обьединение таблиц.
9 сообщений из 9, страница 1 из 1
обьединение таблиц.
    #33103900
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица А
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 id      сумма          
 -----------------
|    1    | 111.00  |          
|    1    | 222.00  |          
|    1    | 333.00  |          
|    2    | 444.00  |              
 -----------------

Таблица В
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 id          сумма          
 -------------------
|      1    | 555.00  |          
|      1    | 666.00  |          
|      3    | 100.00  |          
|      2    | 100.00  |                
 -------------------

Соединяю

SELECT A.id, A.сумма, B.сумма;
FROM expenses A;
left JOIN В;
ON А.id=B.id;
ORDER BY 1

Получается данные

id сумма_А сумма_В
----------------------------
| 1 | 111.00 | 555.00 |
| 1 | 222.00 | 666.00 |
| 1 | 333.00 | 555.00 | в этой строчке Сумма_В не должна стоять
| 2 | 444.00 | 100.00 |
----------------------------
Подскажите как правельно написать обьединения?
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33103950
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не зная предметной области и полного содержания таблиц на входе и выходе, ИМХО, трудно вам что-то сказать.

Все же попробуйте заменить left на INNER
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33104041
Фотография Grumax_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связь много ко многим не правильно реализована, необходимо иметь 3-ю таблицу, которая реализует отношение 1:N

Table_a.dbf
idSumma1111.002222.003333.004444.00
Table_b.dbf
idSumma5555.006666.007100.008100.00
Table_c.dbf
id_aid_b1526348
Код: plaintext
1.
2.
SELECT a.Id, a.Summa, c.Id_a AS AA, c.Id_b AS BB, b.Id, b.Summa FROM Table_c c ;
	LEFT  JOIN Table_a a ON c.Id_a==a.Id ;
	LEFT  JOIN Table_b b ON c.Id_b==b.Id 

------------------------------------------------------------------------------------
Код: plaintext
Я во все дела суюсь -> всесторонне разовьюсь                                                         Visual FoxPro 8.0
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33104233
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
несовсем понял ... прошу более подробного обьяснения...
Более подробный пример моей задачи

Tabll_фио
idИмя1Вася2Коля

Tabll_затраты
idкод_затратысумма1830018200161002560024650

Tabll_доходы
idкод_доходасумма110250114100256150

дальше хочу это все собрать в одну таблицу для отчета
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT L1.имя, L2.код_затраты, L2.сумма,;
           L3.код_дохода, L3.сумма;
	FROM Tabll_фио L1;
	left JOIN Tabll_затраты L2;
		ON l1.id=l2.id;
        left JOIN Tabll_доходы L3
                 ON l1.id=l3.id;
	ORDER BY  1 
получается так
Tabll_итог
фиокод_затратысумма_затратыкод_доходасумма_дохода18300102501820014100161001025025600561502465056150

а нужно так
Tabll_итог
фиокод_затратысумма_затратыкод_доходасумма_доходаВася830010250Вася820014100Вася6100Коля560056150Коля4650

подскажите как мне сделать правельно.
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33104349
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через объединение (JOIN) так как ты хочешь не получиться. Ты ведь хочешь чисто "механически" объединить таблицы по "первым записям" в "порядке следования"

На каком основании записи из таблицы "Затраты" ставиться в соответсвие запись из таблицы "Доходы"? В твоем случае просто по порядку следования. А в идеологии объединения по JOIN такого термина просто нет. "Порядок следования" может быть у результата выборки, но это ни в коем случае не может быть признаком объединения таблиц.

То, что нужно, элементарно реализовать через SET RELATION, но через Select-SQL будет крайне сложно. Потребуется куча условностей и ссылок на физический номер записи, что само по себе уже плохо.
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33104407
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй через UNION:

SELECT L1.имя, L2.код_затраты, L2.сумма, 0 as код_затраты, 0 as сумма, From Tabll_фио L1, Tabll_затраты L2;
Where l1.id=l2.id UNION;
SELECT L1.имя, 0 as код_затраты, 0 as сумма, L3.код_дохода, L3.сумма From Tabll_фио L1, Tabll_затраты L2;
Where l1.id=l3.id ORDER BY 1
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33104508
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorProgrammerПопробуй через UNION:

SELECT L1.имя, L2.код_затраты, L2.сумма, 0 as код_затраты, 0 as сумма, From Tabll_фио L1, Tabll_затраты L2;
Where l1.id=l2.id UNION;
SELECT L1.имя, 0 as код_затраты, 0 as сумма, L3.код_дохода, L3.сумма From Tabll_фио L1, Tabll_затраты L2;
Where l1.id=l3.id ORDER BY 1

Спосибо, это впролне подходит.
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33106256
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ
Есть вопрос.

Делаю следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * from Tabll_затраты;
	INTO CURSOR _cur1
INDEX ON id TAG id

SELECT * from Tabll_доходы;
	INTO CURSOR _cur2
INDEX ON id TAG id

SELECT Tabll_фио
SET RELATION TO id INTO _cur1, id INTO _cur2
SET SKIP TO _cur1, _cur2

связь работеат так как надо .... проблема с отчетом, выводит все содержимое таблиц.... в чем проблемма?
...
Рейтинг: 0 / 0
обьединение таблиц.
    #33106618
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tone
связь работеат так как надо .... проблема с отчетом, выводит все содержимое таблиц.... в чем проблемма?
В смысле? А Вы что хотите получить? Настроенная Вами связь и должна вывести все содержимое. Ведь никаких ограничений не задано.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / обьединение таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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