2 Stimmen

Wie kann ich in MySQL ein "get only if this exists" haben?

Meine Frage...

   SELECT MIN(p.`land_price`) AS `min_price`,
          MAX(p.`land_price`) AS `max_price`,
          p.`estate`,
          m.`file`

     FROM `properties` AS `p`
LEFT JOIN `estates` AS `e`
       ON p.`estate` = e.`title`

LEFT JOIN `media` AS `m`
       ON  m.`category` = e.`id` 

    WHERE p.`estate` IN ("EstateA", "EstateB")
      AND p.`land_price` != 0
 GROUP BY p.`estate

Was ich tun möchte, ist, ein Element aus media Tabelle (aliased as m ) wobei name = "Profile" nur auszuwählen, wenn sie vorhanden ist, andernfalls einfach eine leere Spalte für andere in der Ergebnismenge. Im Moment, wenn ich diese Einschränkung hinzufügen, gibt es nur mir Übereinstimmungen, wo das name existiert.

Im Moment wird nur der erste Eintrag in media die mit den Einschränkungen übereinstimmen.

6voto

Alec Punkte 8804

Der "WHERE"-Teil schränkt die Ergebnisse aus der Haupttabelle ein properties . In diesem Fall sollten Sie dem "ON"-Teil des zweiten LEFT JOIN eine weitere Einschränkung hinzufügen.

SELECT MIN(p.`land_price`) AS `min_price`,
          MAX(p.`land_price`) AS `max_price`,
          p.`estate`,
          m.`file`

     FROM `properties` AS `p`
LEFT JOIN `estates` AS `e`
       ON p.`estate` = e.`title`

LEFT JOIN `media` AS `m`
       ON  m.`category` = e.`id` 
       AND m.`name` = 'Profile'

    WHERE p.`estate` IN ("EstateA", "EstateB")
      AND p.`land_price` != 0
 GROUP BY p.`estate

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X