Vinzenz Mai: MySQL Abfrage!

Beitrag lesen

Hallo lvl,

Also ich habe folgende MySQL Datenbank

etwas exakter: Du hast eine Tabelle in einer MySQL-Datenbank. Es kann natürlich sein, dass Deine Tabelle die einzige der Datenbank ist :-)

+------------------------------+
|ID|PersonenFID|Gruppe|Typ|Wert|
+------------------------------+
|1 |0815       |MA    |ST |Ger |
|2 |0815       |MA    |IT |Ait |
|3 |0816       |MA    |ST |Ger |
|4 |0816       |MA    |IT |Bom |
|5 |0817       |MA    |ST |Aus |
|6 |0817       |MA    |IT |Ait |
+------------------------------+

Er soll mir die PersonenFID ausgeben unter folgenden Bedingungen.

(Typ = ST
und
Wert = Ger)

UND

(Typ = IT
und
Wert = Ait)

Wichtig ist: Ich möchte wissen, welche PersonenFID den ST auf Ger hat und zusätzlich wo das IT auf Ait steht.

Ich habe den ganzen Thread lesen müssen, um zu verstehen was Du wirklich meinst. Für Dein Problem benötigst Du einen JOIN, und zwar einen ganz speziellen: einen JOIN auf die gleiche Tabelle. Damit Du unterscheiden kannst, aus welcher Tabelle Du die Daten nimmst, musst Du Alias-Namen vergeben.

  
SELECT  
  a.PersonenFID  
FROM Tabelle AS a  
INNER JOIN Tabelle AS b  
ON a.PersonenFID = b.PersonenFID  
WHERE ( a.Typ = 'ST' AND a.Wert = 'Ger')  
      AND (b.Typ = 'IT' AND b.Wert = 'Ait')  

Somit kriegst Du alle PersonenFIDs, die zum einen einen Eintrag mit der Kombination (ST/Ger) und zum anderen einen Eintrag mit der Kombination (IT/Ait) haben.

Freundliche Grüße

Vinzenz,

der sich notiert hat, dass der Selfjoin in den einen oder anderen Artikel über die Joins gehört.