Połączenie wiele do wielu + unikaty

0

Problem pojawił się przy wyszukiwaniu zamienników w produkcji i sprowadza się łączenia tabel jak poniżej
Post4P.png
Możliwe, że należy zastosować GROUP + ORDER BY oraz DISTINCT aby uzyskać coś w rodzaju excelowego UNIQUE ale zdecydowanie przekracza to moje obecne umiejętności.
(Proszę wybaczyć różne potknięcia. To mój pierwszy post na tym forum)

1

Nie kumam Twojego opisu w ogóle. A co NIE jest "unikalnego" w a i c ? Wyjaśnij lepiej.

0

@BlackBad: Fakt, może niepotrzebnie pisałem o tej unikalności i można to inaczej rozwiązać.
Produkt T1 w planach składa się z dwóch składników a i b. W montażu T2 zabrakło składnika b i zastąpiono go składnikiem c. Porównanie planu i wykonania przez łączenie powinno dać tabelę wynikową w rodzaju:
Kol1(Plan).. Kol2(Wykonanie)
a..................a
b..................NULL
NULL............c

(Czy jest gdzieś ściąga, jak ładniej pisać posty?)

1

Jeśli to jest faktycznie co potrzebujesz to będzie tak:

SELECT p.Klucz, p.Kol1, m.Kol2
from dbo.Plany p
LEFT JOIN dbo.Montaz m 
	on p.Klucz = m.Klucz
	and p.Kol1 = m.Kol2

UNION

SELECT m.Klucz, p.Kol1, m.Kol2
from dbo.Plany p
RIGHT JOIN dbo.Montaz m 
	on p.Klucz = m.Klucz
	and p.Kol1 = m.Kol2

screenshot-20210427224537.png

Tu na Twoich danych: http://sqlfiddle.com/#!18/3f270/1

0

Dziękuję serdecznie! Tak, dokładnie o to chodziło. No i ta sieciowa platforma testowa - cudo.
Przepraszam, że nie podziękowałem od razu, ale zająłem się wprowadzaniem danych rzeczywistych i napotkałem problem.
LEFT JOIN działa prawidłowo, a RIGHT JOIN zwraca tylko rekord ze zgodnymi wartościami ( w przykładzie równość po AND).
Może podpowie Pan gdzie szukać przyczyny.

1

Nie bardzo rozumiem opisany problem. Podaj przykład danych dla jakich zwraca Ci złe wyniki. Najlepiej właśnie przygotowanej w http://sqlfiddle.com/

Ps. I tu na forum sobie nie "panujemy" - doceniam poprawność i d. wychowanie ale nie ma potrzeby tu na forum. Tutaj to ja jestem @BlackBad ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1