2017-07-21 3 views
0

ich eine Tabelle mit Selbstreferenz Eltern/Kind-Aufzeichnungen auf Mysql haben:Selbst verwiesen MySql Tabelle mit Bedingungen auf Eltern und Kind

myTable 

id | parent_id | text_1 | text_2 

Ich brauche eine Abfrage mit diesem Pseudo-Code:

SELECT * FROM myTable WHERE parent_id=-1 
AND IT HAS AT LEAST ONE CHILD 
AND text_1 != 'something' 
AND child.text_2 != 'somethingElse' 

hier UND ES HAT MINDESTENS EIN KIND Bedeutet: es gibt mindestens eine Zeile, dass es Parent_id gleich mit der ID der Zeile ist, die Sie finden.

Wie lautet die Konvertierung dieses Pseudocodes in MySql? Die Anfrage für Laravel eloquent wäre auch in Ordnung.

Antwort

1

Um festzustellen, ob ein Element untergeordnete Elemente hat, verknüpfen Sie die Tabelle mit sich selbst in der Parent/Child-Beziehung.

SELECT 
    * 
FROM myTable a 
LEFT JOIN myTable b 
    ON a.id = b.parent_id 
WHERE (NOT b.id IS NULL) AND 
    a.id = -1 AND 
    a.text_1 <> 'something' AND 
    b.text_2 <> 'somethingElse' 
+1

Ich sehe eine Mehrdeutigkeit Fehler am Horizont – Strawberry

+0

@Strawberry - LOL –

+0

Das ist richtig Erdbeere ist. Es braucht nur ein wenig Bearbeitung: a.text_1 und b.text_2 – user7432810

Verwandte Themen