Frage von jimmyneutron, 40

MS Sql Abfrage?

Hallo Community,ich folgende Abfrage in MS SQL machen:

Vertritt eine Kontaktperson aus den Lieferanten mehrere Firmen?

(Struktur: select ContactName (Kontaktperson) ..... from Suppliers (Lieferant) ....) 

(Firma = CompanyName)

Bloß weiß ich da nicht, wie ich vorankommen soll?

Ich weiß nicht, ob ich das so richtig denke: Ich soll die Kontaktperson ausgeben, die mehr als 2 Firmen besitzt.

Referenzbild ist hinzugefügt

LG jimmyneutron

Antwort
von Senchiohall, 31

Hallo,

dein Stichwort wäre: ORDER BY ASC/DESC

http://www.sql-lernen.de/order-by.php

Kommentar von jimmyneutron ,

Kannst du deine Antwort ein bisschen präzisieren, also aufschreiben wie die Abfrage heißt?

Kommentar von Senchiohall ,

Deine jetzige Struktur beibehalten mit dem zusatz:

Sprich: Select From ....

ORDER BY Kontaktperson ASC, Firma ASC;
Kommentar von jimmyneutron ,

Bei deiner Abfrage gebe ich alle Kontaktpersonen und die Firma in aufsteigender Reihenfolge aus, aber ich habe die Frage editiert, ich denke, ich soll eine Abfrage schreiben, die alle Kontaktpersonen ausgibt, die mehrere Firmen besitzt/dort angestellt ist

Kommentar von Senchiohall ,

Oh, Entschuldigung.

GROUP BY Firma,Kontaktperson
ORDER BY Kontaktperson;

So sollte das ganze Nach Kontaktpersonen sortiert sein mit der Gruppierung der Firmen. Falls nicht, dann geb ich auf und meine SQL Erfahrung reicht nicht.

Bei mir hat ein SQL-Test grad positives ergeben.

Kommentar von jimmyneutron ,

Ich habe so vor anderthalb Monaten mit MS SQL begonnen, somit bin ich auch unerfahren. Deine Abfrage gruppiert nach Firmen, Kontaktperson und gibt das ganze geordnet nach Kontaktpersonen aus. Was würdest du bei Select hinschreiben? In dem Bild hat kein Kontaktperson mehrere Firmen, aber ich muss da ja syntaktisch in MS SQL hinschreiben. Gibt es keine WHERE-Bedingung, die ermittelt, ob ein Kontaktperson zwei Firmen hat.

Übrigens: Schreibst du in MySQL oder in MS SQL oder irgenwas anderes?

Antwort
von wotan38, 3

Die Abfrage muss lauten:

SELECT kontaktperson, COUNT(*) FROM tabelle
GROUP BY kontaktperson
HAVING COUNT(*) > 1

Es werden alle Kontaktpersonen angezeigt, die in mehr als einer Firma genannt werden. Sollen die betreffenden Firmen auch angezeigt werden, heißt die Abfrage dann:

SELECT kontaktperson, firma FROM tabelle
WHERE kontaktperson IN
(SELECT kontaktperson FROM tabelleGROUP BY kontaktperson HAVING COUNT(*) > 1)
ORDER BY kontaktperson

Keine passende Antwort gefunden?

Fragen Sie die Community