2010-12-22 14 views
1

Ich habe zwei Tabellen: Beiträge und custom_fields.Mysql Reihenfolge Ergebnisse, wenn eine bestimmte Bedingung erfüllt ist

Ein Post kann mehrere custom_fields haben.

Beitragstabelle: ID | Titel
Benutzerdefinierte Felder Tabelle: ID | post_id | benutzerdefinierter_key | custom_value

Was ich will, ist alle Beiträge anzeigen, aber zeigen Sie zuerst die Featured diejenigen, die haben: "custom_key = 'featured' AND custom_value = '1'".

Nicht alle Posts haben den custom_key = "featured".

Wie kann ich eine MySQL-Abfrage, die auf diese Weise Listen?

Vielen Dank!

Antwort

1

So etwas sollte funktionieren:

SELECT * FROM posts LEFT JOIN customfields 
     ON post_id=posts.id AND custom_key='featured' 
ORDER BY custom_value=1 DESC, id DESC; 
+0

Diese Beiträge zeigen die vorgestellten sind, was mit dem Rest? –

+0

Dies sollte alle Beiträge anzeigen, aber die Features werden zuerst aufgeführt. –

+0

@shakti, das "featured" ist Teil der äußeren Join-Bedingung. – Ronnis

Verwandte Themen