Ich habe folgende Datenbankstruktur:Wie coalesce für doppelte Tabellen vermeiden
tblShelter
ShelterId
PetId
clientId
ShelterName
Adresse
tblClient
clientId
PetId
tblPet
PetId
petname
So, Haustier zu einem Schutz oder ein registrierten Obdach Client gehören kann (angenommen pet).
Also meine Shelter Tabelle hat Daten wie folgt:
ShelterId PetId ClientId ShelterName
1 100 NULL Test
1 NULL 101 Test
1 102 NULL Test
Also, ich brauche alle PetNames für jeden Unterschlupf (Direkt Schutz Haustiere oder Kunden) erhalten
Hier ist meine Frage:
Select Coalesce(p.PetName, pclient.PetName) as PetName
from tblShelter s
Left Join tblPet p
on p.PetId = s.PetId
Left Join (select p2.PetId, p2.PetName
from tblClient c
join tblPet p2
on c.PetId = p2.PetId) pclient
on s.PetId = pclient.PetId
where shelterId=1
Frage: Ist es möglich, diese Abfrage zu optimieren? Momentan sieht es nicht gut aus. Bitte beachten Sie, dass die Datenbankstruktur der Einfachheit halber gezeigt wird. Leider kann es nicht geändert werden. Ist es möglich, auf intelligente Weise Koaleszenz loszuwerden oder Unterabfrage loszuwerden? -
Hallo Damien, danke für deine Antwort. Ich versuche nicht, COALESCE per se zu entfernen. Ich möchte nur meine Abfrage vereinfachen und so effizient wie möglich machen. Können Sie erklären, wie Sie eine intelligentere "An" -Bedingung erreichen können? – user194076
@ user194076 - 'p.PetId = COALESCE (s.Petid, c.PetId)' –
Super! Lassen Sie mich das auf meiner Anfrage versuchen – user194076