left join
От: hmelyoff  
Дата: 22.03.05 17:24
Оценка:
База mysql
Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

заранее боагодарен!
Re: left join
От: mnicolas Молдова  
Дата: 23.03.05 07:11
Оценка:
Здравствуйте, hmelyoff, Вы писали:

H>База mysql

H>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>заранее боагодарен!



select id from a
where id not in (select id from b)
union
select id from b
where id not in (select id from a)
Re: left join
От: _Senya  
Дата: 23.03.05 07:45
Оценка:
Здравствуйте, hmelyoff, Вы писали:

H>База mysql

H>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>заранее боагодарен!


SELECT A.*
FROM A
LEFT JOIN B ON A.[ID] = B.[ID]
WHERE B.[ID] IS NULL


Это A-B, что-то большее — комбинированием
Дураки — не мамонты, они не вымрут...
Re[2]: left join
От: Lomman  
Дата: 23.03.05 09:07
Оценка:
Здравствуйте, _Senya, Вы писали:

_S>Здравствуйте, hmelyoff, Вы писали:


H>>База mysql

H>>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>>заранее боагодарен!


_S>
_S>SELECT A.*
_S>FROM A
_S>LEFT JOIN B ON A.[ID] = B.[ID]
_S>WHERE B.[ID] IS NULL
_S>


_S>Это A-B, что-то большее — комбинированием


Этот вариант выбирает id только из таблицы А
Если надо выбрать несоответствующие id из обоих таблиц, то код надо модифицировать примерно так:

SELECT B.*
FROM A
RIGHT JOIN B ON A.[ID] = B.[ID]
WHERE A.[ID] IS NULL
UNION
SELECT A.*
FROM A
LEFT JOIN B ON A.[ID] = B.[ID]
WHERE B.[ID] IS NULL
Re[3]: left join
От: _Senya  
Дата: 23.03.05 09:25
Оценка:
Здравствуйте, Lomman, Вы писали:

L>Здравствуйте, _Senya, Вы писали:


_S>>Здравствуйте, hmelyoff, Вы писали:


H>>>База mysql

H>>>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>>>заранее боагодарен!


_S>>
_S>>SELECT A.*
_S>>FROM A
_S>>LEFT JOIN B ON A.[ID] = B.[ID]
_S>>WHERE B.[ID] IS NULL
_S>>




L>Этот вариант выбирает id только из таблицы А

L>Если надо выбрать несоответствующие id из обоих таблиц, то код надо модифицировать примерно так:

L>
L>SELECT B.*
L>FROM A
L>RIGHT JOIN B ON A.[ID] = B.[ID]
L>WHERE A.[ID] IS NULL
L>UNION
L>SELECT A.*
L>FROM A
L>LEFT JOIN B ON A.[ID] = B.[ID]
L>WHERE B.[ID] IS NULL
L>


Что-то большее — комбинированием (то, что представили Вы. (A-B) + (B-A))
Дураки — не мамонты, они не вымрут...
Re: left join
От: Alexey Rovdo Россия http://ru.linkedin.com/in/rovdo
Дата: 23.03.05 14:00
Оценка:
Здравствуйте, hmelyoff, Вы писали:

H>База mysql

H>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>заранее боагодарен!


Почитай про left outer join
Re: left join
От: greenya Украина  
Дата: 23.03.05 18:49
Оценка:
Здравствуйте, hmelyoff, Вы писали:

H>База mysql

H>Нужно выбрать из базы остаток от пересечения по полю id двух таблиц (A, B). Говорят, что через left join можно сделать... не могу сообразить как...

H>заранее боагодарен!


а че так низззя ? :

select a.id,b.id
from a,b
where a.id<>b.id

или

select distinct a.id,b.id
from a,b
where a.id<>b.id
Re[2]: left join
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.03.05 05:36
Оценка:
Здравствуйте, greenya, Вы писали:

G>а че так низззя ? :

можно. Вот только вернется уж очень много записей. Намекну:
select a.id,b.id
from a,b

вернет все сочетания a.id и b.id. Т.е. количество записей будет равно N*M, где N и M — количества записей в таблицах. Много ли ты вычтешь из этого, убрав совпадающие записи?
... << RSDN@Home 1.1.4 beta 4 rev. 347>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.