Frage

Ich habe Probleme mit einer SQL-Abfrage verwendet, Profil-Felder angezeigt werden und alle (optional) entsprechenden Werte.

Hier ist die SQL-Abfrage Ich bin mit:

SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
LEFT JOIN `profile_values` AS pv ON (pf.`id` = pv.`field_id`)
WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d') AND (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
ORDER BY pf.`order` ASC

Das Problem ist, ich habe, dass alle Spalten ohne entsprechende profile_values Aufzeichnungen überhaupt nicht angezeigt, wenn sie zeigen sollten, sondern nur mit einem leeren Wert.

Vielen Dank!

War es hilfreich?

Lösung

Versuchen Sie die Profilwerte Bedingungen an die JOIN-Anweisung zu bewegen:

 SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
 LEFT JOIN `profile_values` AS pv ON (
         pf.`id` = pv.`field_id`  AND 
         (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
  )
 WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d')
 ORDER BY pf.`order` ASC
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top