Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выбрать все из таблицы 1 и все из таблицы 2 [D6, MySQL]


Страницы:   1 2

Aser ©   (2004-10-22 11:39:00) 

Мне нужно именно ВСЕ, а не по условию. В нете понаходил много выборок из двух таблиц, но там ограничение ставится на SELECT. Памагите пажалста.


Johnmen   (2004-10-22 15:20:00) [1]

Серега, ты чего ? :)
mysql.ru
Яndex+'оператор if в mysql'


msguns   (2004-10-22 15:06:00) [2]

В ODBC-драйвере ? Или сиквеле стандарта ?
Дай ссылку, если можно. Утерял я доку при переезде, а урлу запамятовал.


Johnmen   (2004-10-22 14:48:00) [3]


> msguns ©   (22.10.04 14:26) [18]


> А что это за "IF" ?


Есть в нем встроенный условный оператор.


Johnmen   (2004-10-22 14:47:00) [4]


> msguns ©   (22.10.04 14:26) [18]



> FULL не пропускает ODBC-driver ;((


Здесь я загнул :) Забыл, что в MySQL нет полного внешнего соединения...


msguns   (2004-10-22 14:26:00) [5]

FULL не пропускает ODBC-driver ;((
А что это за "IF" ?


Johnmen   (2004-10-22 14:01:00) [6]

SELECT IF(T1.ID IS NULL, T2.ID, T1.ID), T1.Name, T2.Name
FROM Table1 T1
FULL JOIN Table2 T2 ON T2.ID=T1.ID
ORDER BY 1


msguns   (2004-10-22 13:44:00) [7]

Только сейчас вроде дошло..
Похоже из [10] что трабла в извечной путанице поставщиков (кредиторов) и покупателей (дебиторов), когда заводят два разных справочника. И по чем же будем стыковать ? Надеюсь не по наименованиям ? Если по иден.коду, тогда еще можно надеяться на успех ;))

Видимо, что задачка что-то типа общего баланса с партнерами (как с дебеторами и кредиторами одновременно)

Вообще-то лучше всего делать один общий справочник, т.к. поля на 90% идентичные. И ввести доп.поле - флажок. Типа
0 - кредитор, 1-дебитор, 2-кредитор и дебитор
А если еще сделать в виде дерева, то узер будет пИсать от радости, т.к. оч.удобно. При показе именно поставщиков (например, при вводе приходных накладных) в запрос вставлять доп.условие <Флажок> <> 1


msguns   (2004-10-22 13:25:00) [8]

Вот так должно получиться:

SELECT T1.ID, T1.NAME, T2.NAME AS NAME1
 FROM T1
 LEFT JOIN T2 ON (T1.ID=T2.ID)
 UNION
SELECT T2.ID, NULL AS NAME, T2.NAME AS NAME1
 FROM T2
 WHERE T2.ID NOT IN
   (SELECT T2.ID
     FROM T2, T1
     WHERE T2.ID=T1.ID)


Johnmen   (2004-10-22 12:37:00) [9]

>Reindeer Moss Eater ©   (22.10.04 11:47) [2]

>>Reindeer Moss Eater ©   (22.10.04 11:47) [2]
>>select * from table1
>>union all
>>select * from table2

>>msguns ©   (22.10.04 11:50) [3]
>>Это если таблицы идентичные..

>Reindeer Moss Eater ©   (22.10.04 11:53) [4]
>Это если в таблицах одинаковое количество строк.
>Иначе он получит все из таблицы 1 и все из таблицы 2 + какую-то
>фигню которой нет ни там, ни там.

Я так понял, ты говорил о union.


Aser   (2004-10-22 12:23:00) [10]

Мне вот так (если мона) плз
Id      Name     Name1
1       A        D
2       B        F
3       C
5                N


msguns   (2004-10-22 12:18:00) [11]

Прежде всего надо выяснить откуда ноги произростают:
Есть 2 таблы

    Table1
   --------
Id        Name
 1        A
 2        B
 3        C

    Table2
   --------
Id        Name
 1        D
 2        F
 5        N

Что надо на выходе ?
   
    Table3
   --------
Id        Name
 1        A
 1        D
 2        F
 2        B
 3        C
 5        N

    или

    Table3
   --------
Id      Name     Name1
 1       A        D
 2       B        F
 3       C
 5                N

   ?????????


Reindeer Moss Eater   (2004-10-22 12:10:00) [12]

Johnmen ©  

Чего я прогнал?
У парня x1 строк и y1 полей в одной таблице
И x2 строк и y2 полей в другой таблице

Если сделать любое объединение таблиц, то либо не увидим части обной таблицы, либо увидим нулы которых нет в меньшей.

А так что бы все из первой и все из второй - не выйдет


Aser   (2004-10-22 12:05:00) [13]

Ыыыы... Я то догадался... Но вот не наю как для условия LEFT JOIN смотрицца включение дополнительное...

SELECT clients.id, partners.id
FROM clients, partners
LEFT OUTER JOIN partners ON partners.id = ''


#1066 - Not unique table/alias: 'partners'


Johnmen   (2004-10-22 12:04:00) [14]

>Reindeer Moss Eater ©   (22.10.04 11:53) [4]

Что-то ты прогнал...:)


Reindeer Moss Eater   (2004-10-22 12:02:00) [15]

Может стоит включить в список селекта то, чего хочешь, а не скромно ждать пока "само догадается" ?


Aser   (2004-10-22 12:01:00) [16]

:) :(
а как мне выбрать и из второй таблицы тоже? хотя бы partners.id?


Reindeer Moss Eater   (2004-10-22 11:59:00) [17]

SELECT clients.id
Выбирает только clients.id :(


Что попросил, то и выбирает.
Вот зараза. Правда?


Aser   (2004-10-22 11:57:00) [18]

>msguns
SELECT clients.id
FROM clients
LEFT OUTER JOIN partners ON partners.id = ''


Выбирает только clients.id :(

> Reindeer Moss Eater
#1222 - The used SELECT statements have a different number of columns
> то если в таблицах одинаковое количество строк.
у меня разное :(


Reindeer Moss Eater   (2004-10-22 11:53:00) [19]

>msguns ©   (22.10.04 11:44) [1]

Это если в таблицах одинаковое количество строк.
Иначе он получит все из таблицы 1 и все из таблицы 2 + какую-то фигню которой нет ни там, ни там.


msguns   (2004-10-22 11:50:00) [20]

>Reindeer Moss Eater ©   (22.10.04 11:47) [2]

Это если таблицы идентичные..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо