Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка данных / 5 сообщений из 5, страница 1 из 1
24.12.2009, 06:11
    #36383546
VladDunaev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных
добрый день
очень нужна помощь
есть первичная таблица назовём её temp1 в ней содержатся все необходимые, в этой и последующих таблицах temp2,temp3,temp4 есть столбец cod по данным из которого можно объеденить данные во всех этих таблицах.
Моя задача объеденить данные из таблиц используя, как ключевую temp1 - т.к. в других таблицах некоторых кодов может не быть и в таком случае присваивать 0
Простой выборкой sql тут не обойтись по причине отсутствия некоторых полей cod в таблицах temp2,temp3,temp4
прошу помочь
...
Рейтинг: 0 / 0
24.12.2009, 07:10
    #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
24.12.2009, 08:27
    #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
24.12.2009, 09:48
    #36383738
VladDunaev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка данных
Шестипалов, Станислав С...кий
большое спасибо тут действительно помог LEFT Join
интересная его особенность - присоединяет не более 10 таблиц, приходится создать временную таблицу и потом к ней снова присоединить оставшиеся таблицы
...
Рейтинг: 0 / 0
24.12.2009, 10:49
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выборка данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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