left join, union, mssql

9 отговора 362 прегледа
#1

left join, union, mssql

hi, imam slednia problem:

2 tablici ot koito triabva da izvadia 1 result

[tbl1]

id
name
address

[tbl2]

id
city
state
zip
country

id pri tbl1 otgovaria na id v tbl2

opitah s UNION, bez uspeh; s LEFT JOIN stava, no ne moga da polzvam WHERE
clause neshto (osnovno tuk e problema)... mysql-a e 4.0.10. blagodaria za pomoshtta.

i oshte neshto :)

koi e latest MSSQL i otkyde moga da go drypna? big 10x.

Отговор
в отговор на bgy #2

Re: left join, union, mssql

select tbl1.*, tbl2.* from tbl1 left join tbl2 using(id) where tbl1.nale = 'alabala'

ако съм те разбрал ко питаш - тва требва да е отговора...и не би трябвало да има много общо с версията на mysql

[линк]
Отговор
в отговор на Topбaлaн #3

Re: left join, union, mssql

Защо ти е join?

На MySQL горния пример би звучал така:

select * from tbl1, tbl2 where tbl1.id = tbl2.id and tbl1.name = 'alabala'

Отговор
в отговор на $burov #4

Re: left join, union, mssql

и каква е разликата ?

[линк]
Отговор
в отговор на $burov #5

Re: left join, union, mssql

select * from tbl1, tbl2 where tbl1.id = tbl2.id and tbl1.name = 'alabala'

и

select tbl1.*, tbl2.* from tbl1 left join tbl2 using(id) where tbl1.nale = 'alabala'

не са еднакви заявки !!

първата в общият случай ще даде по-малко резултати (редове)

втората ще връща резултати, за които tbl1 има стаойности на id, които ги няма в tbl2, полетата на tbl2 на такива редове ще са NULL

Отговор
в отговор на phpGuru #6

Re: left join, union, mssql

забравих,

в случая на въпроса не разбрах, кое от двете е нужно
________________
примерче защо не са еднакви заявките

tbl1
----
id -> name
1 -> 'ceco'
2 -> 'pesho'

(тази е примерна работа затова си измислих полето age)
tbl2
----
id -> age
2 -> 15

сега заявката с неявният джойн ако alabala е ceco, няма да върне нищо, а друга заявка с LEFT JOIN-а ще върне

ceco -> NULL

Отговор
в отговор на $burov #7

Re: кажи, че си забравил LEFT за да се успокоим

s/Защо ти е join?/Защо ти е LEFT join?

Прав ли съм?

Щото ти предлагаш Inner Join ...

Не, че до момента някой е разбрал какво точно иска
bgy с "2 tablici ot koito triabva da izvadia 1 result"

Може да означава най-разнообразни неща ...

salle.online.bg/sig
Отговор
в отговор на phpGuru #8

left [outer] join

както става ясно по-долу, left е съкращение на left outer, така че гуруто е прав че това са различни заявки.
Апропо, MS SQL Server поддържа ли using? Щото в сайбейз анси синтаксиса се поддържа само в последната версия (12.5) и то без using клауза.


This is the ANSI syntax for joining tables:

left_table [inner | left [outer] | right [outer]] join right_table
on left_column_name = right_column_name

Отговор
в отговор на baj L\bo #9

че е прав - прав е гурото...

идея нямам, до сега не съм го ползвал никъде....
мернах го USING оня ден в хелпа и много ми допадна като синтаксис...

[линк]
Отговор
в отговор на phpGuru #10

Re: left join, union, mssql

pyrvata e s inner (natural) join... vtorata s left (outer) joint... razlikata e ogromna...

Отговор