Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Как выбрать все из таблицы 1 и все из таблицы 2   Найти похожие ветки 

 
Aser   (2004-10-22 11:39) [0]

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


 
msguns ©   (2004-10-22 11:44) [1]

OUTER JOIN .. ON <Заведомо не выполнияющееся условие>


 
Reindeer Moss Eater ©   (2004-10-22 11:47) [2]

select * from table1
union all
select * from table2


 
msguns ©   (2004-10-22 11:50) [3]

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

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


 
Reindeer Moss Eater ©   (2004-10-22 11:53) [4]

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

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


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

>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:59) [6]

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


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


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

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


 
Reindeer Moss Eater ©   (2004-10-22 12:02) [8]

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


 
Johnmen ©   (2004-10-22 12:04) [9]

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

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


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

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

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


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


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

Johnmen ©  

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

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

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


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

Прежде всего надо выяснить откуда ноги произростают:
Есть 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

   ?????????


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

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


 
Johnmen ©   (2004-10-22 12:37) [14]

>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.


 
msguns ©   (2004-10-22 13:25) [15]

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

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)


 
msguns ©   (2004-10-22 13:44) [16]

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

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

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


 
Johnmen ©   (2004-10-22 14:01) [17]

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 14:26) [18]

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


 
Johnmen ©   (2004-10-22 14:47) [19]


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



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


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


 
Johnmen ©   (2004-10-22 14:48) [20]


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


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


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


 
msguns ©   (2004-10-22 15:06) [21]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.025 c
1-1100084188
Артем К.
2004-11-10 13:56
2004.11.21
Баг в Меню?


14-1099428143
TDK
2004-11-02 23:42
2004.11.21
Загрузка и синий экран "смерти"


14-1099826959
Ленивый студент
2004-11-07 14:29
2004.11.21
вопрос по си Билдеру


4-1097653311
paa
2004-10-13 11:41
2004.11.21
Отловить запуск приложения


9-1089778747
Xerx
2004-07-14 08:19
2004.11.21
FPS