powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка данных
5 сообщений из 5, страница 1 из 1
Выборка данных
    #36383546
VladDunaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день
очень нужна помощь
есть первичная таблица назовём её temp1 в ней содержатся все необходимые, в этой и последующих таблицах temp2,temp3,temp4 есть столбец cod по данным из которого можно объеденить данные во всех этих таблицах.
Моя задача объеденить данные из таблиц используя, как ключевую temp1 - т.к. в других таблицах некоторых кодов может не быть и в таком случае присваивать 0
Простой выборкой sql тут не обойтись по причине отсутствия некоторых полей cod в таблицах temp2,temp3,temp4
прошу помочь
...
Рейтинг: 0 / 0
Выборка данных
    #36383575
VladDunaev,
Честно говоря, них...Ничего не понял... :-(
как так может быть:
VladDunaevВ temp1 и последующих таблицах (temp2,temp3,temp4) есть столбец cod, по данным из которого можно объединить данные во всех этих таблицах.

и одновременно:
VladDunaev
Простой выборкой sql тут не обойтись по причине отсутствия некоторых полей cod в таблицах temp2,temp3,temp4

Я НЕ ПОНИМАЮ!!!
Вы уж определитесь - есть там поле Cod или его нету? Одно оно или их несколько?
А если есть такое поле, но там отсутствуют некоторые данные, то читайте книги и хелп по Join'ам.
В частности, по LEFT JOIN и RIGHT JOIN и используйте это в своих запросах.
Если диалект SQL не позволяет работать с такими JOIN'ами, то всегда есть UNION. В общем, на SQL можно сделать очень много, если не вспоминать об его изучении в последний день перед сдачей зачета/экзамена/курсовой...
...
Рейтинг: 0 / 0
Выборка данных
    #36383635
Станислав С...кийесть там поле Cod или его нету? Одно оно или их несколько?
Имхо, он хотел сказать, что поле есть, просто в некоторых таблицах нет определённых значений ключа.

Мне думается, что решением будет нечто вроде

Код: plaintext
1.
2.
3.
4.
5.
SELECT temp1.cod, temp1.field1,temp2.field2,temp3.field3 <<и далее весь список необходимых полей>> ;
FROM temp1 ;
LEFT JOIN temp2 ON temp2.cod=temp1.cod ;
LEFT JOIN temp3 ON temp3.cod=temp1.cod ;
WHERE <<тут условие выборки, если необходимо>> ;
INTO CURSOR curResult

Если в таблицах что-то вроде:
temp1
Код: plaintext
1.
2.
3.
cod field1
 1     val11
 2     val12
 3     val13
temp2
Код: plaintext
1.
cod field2
 1     val21
temp3
Код: plaintext
1.
cod field3
 2     val32
Должно получиться:
Код: plaintext
1.
2.
3.
cod  field1  field2   field3 
 1      val11   val21   .null.
 2      val12   .null.   val32
 3      val13   .null.  .null.
...
Рейтинг: 0 / 0
Выборка данных
    #36383738
VladDunaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шестипалов, Станислав С...кий
большое спасибо тут действительно помог LEFT Join
интересная его особенность - присоединяет не более 10 таблиц, приходится создать временную таблицу и потом к ней снова присоединить оставшиеся таблицы
...
Рейтинг: 0 / 0
Выборка данных
    #36383888
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал так, если могут содержаться ключевые поля в таблицах 2,3,4, которые отсутствуют в temp1.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select чтоВамНадоИзТаблиц 
from (select cod from temp1 union 
select cod from temp2 union 
select cod from temp3 union 
select cod from temp4) cAll
left join temp1 on cAll.cod=temp1.cod
left join temp2 on cAll.cod=temp2.cod
left join temp3 on cAll.cod=temp3.cod
left join temp4 on cAll.cod=temp4.cod
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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