pooleleven
Benutzer
- Beiträge
- 8
Hallo Forum. Ich komme aus der MySQL-Welt ... wo vieles nicht ganz eindeutig aber dafür einfacher zu sein scheint ;-) und suche nun in der MSSQL-Welt an der einen oder anderen Stelle bestPractice-Handhabungen.
Habe 2 Tabelle:
Die eine, von der ich alles zeigen möchte:
kontakt_tab
und dann ist da noch eine, aus der nur gelesen werden soll, wenn es übereinstimmung gibt:
descr_tab
in Mysql würde diese Abfrage eine Lösung liefern:
ein sauberes Ergebnis.
MsSQL meldet dagegen "kontakt_tab.name is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause" ... was irgendwie ja auch verständlich ist, weil unter Umständen hier ja mehrere Werte enthalten sein könnten.
Habe mit STRING_AGG (der Wert ist in meinem Beispiel ja immer eindeutig) eine Lösung gebaut ... die ich aber nicht wirklich "schön" finde und die, weil "funktion" sicher auch mal an der Performance nuggelt.
Gibt es in MsSQL hierfür eine "elegante" Lösung?
Habe 2 Tabelle:
Die eine, von der ich alles zeigen möchte:
kontakt_tab
ID-KONTAKT (Key, Unique) | NAME |
---|---|
1 | Bruno |
2 | Ilse |
3 | Irmgard |
4 | Brundhilde |
und dann ist da noch eine, aus der nur gelesen werden soll, wenn es übereinstimmung gibt:
descr_tab
ID-DESCR (key, Unique) | KONTAKT-ID (Unique) | DESCRIPTION |
---|---|---|
1 | 2 | Beschreibung von Ilse |
3 | 3 | Beschreibung von Irmgard |
in Mysql würde diese Abfrage eine Lösung liefern:
SQL:
select
kontakt_tab.id-kontakt,
kontakt_tab.name,
descr_tab,description
from kontakt_tab
left join descr_tab on descr_tab.kontakt-id = kontakt_tab.id-kontakt
group by kontakt_tab.id-kontakt
ein sauberes Ergebnis.
ID-KONTAKT (Key, Unique) | NAME | DESCRIPTION |
---|---|---|
1 | Bruno | null |
2 | Ilse | Beschreibung von Ilse |
3 | Irmgard | Beschreibung von Irmgard |
4 | Brundhilde | null |
MsSQL meldet dagegen "kontakt_tab.name is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause" ... was irgendwie ja auch verständlich ist, weil unter Umständen hier ja mehrere Werte enthalten sein könnten.
Habe mit STRING_AGG (der Wert ist in meinem Beispiel ja immer eindeutig) eine Lösung gebaut ... die ich aber nicht wirklich "schön" finde und die, weil "funktion" sicher auch mal an der Performance nuggelt.
Gibt es in MsSQL hierfür eine "elegante" Lösung?