![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выбрать все из таблицы 1 и все из таблицы 2 [D6, MySQL]
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]
Это если таблицы идентичные..