Problem z zapytaniem sql (kryteria z innej tabeli)


(Adam Kasprzak18) #1

Witam!

Potrzebuję pomocy w wydaje mi się prostym zapytaniu sql. Sprawa wygląda następująco: mam 2 tabele - tab_a i tab_b.

tab_a	


nind sind

DE4120-Z003210-RRRR-002120	ZW-X-X07-N00-XHI1762

DE4120-Z003210-WWWW-002120	ZW-X-X07-N01-XHI1763

DE4120-Z003210-SSSS-002120	ZW-X-X07-N00-SLS1212

DE4120-Z003210-QQQQ-002120	ZW-X-X07-N01-XHI1764

DE4120-Z003210-SSSS-002120	ZW-X-X07-N00-4957/08

DE4120-Z003210-AAAA-002120	ZW-X-X07-N01-XHI1765

DE4120-Z003210-ZZZZ-002120	ZW-X-X07-N00-XHI1765

DE4120-Z003210-CRRW-002120	ZW-X-X07-N01-XHI1766

DE4120-Z003210-CRRW-002120	ZW-X-X07-N00-XHI1766

DE4120-Z003210-CRRW-002120	ZW-X-X07-N00-SLS1216

tab_b	


sind_wz waga

SLS1214	50

SLS1214	45

SLS1212	60

SLS1212	50

SLS1212	45

4957/08	NULL

SLS1215	45

SLS1215	50

XHI1763	55

SLS1216	45

SLS1216	50

SLS1216	55

SLS1217	50

SLS1217	55

SLS1217	21

jak powinno wyglądać zapytanie, które pokaże mi nind i sind z tab_a, ale tylko takie gdzie fragment sind=sind_wz?

Próbowałem coś wymyślić z join'ami, ale nie ma efektów takich jakich bym oczekiwał.

Nie wiem czy jasno to wyjaśniłem. w razie czego proszę pytać.


(Atinakot) #2

Jeżeli dane w kolumnie tab_a.sind będą miały zawsze taki format jak podałeś (czyli, że dane z tab_b.sind_wz to zawsze 7 ostatnich znaków tab_a.sind ), to można skorzystać z funkcji RIGHT( exp, n ), która wydobędzie nam właśnie te ostatnie znaki z danych w kolumnie tab_a.sind.

Całe zapytanie mogłoby wyglądać tak:

select tab_a.sind, tab_a.nind from tab_a, tab_b

where RIGHT(tab_a.sind,7) = tab_b.sind_wz

Należy podkreślić, że dane w kolumnie tab_a.sind i tab_b.sind_wz muszą być typu varchar(n), by funkcja RIGHT zadziałała poprawnie.