sql >> Database >  >> RDS >> Mysql

Dynamische kolommen in SQL Select-instructie, ongedefinieerde waarden behouden

Je bent heel dichtbij. U moet deelnemen aan uw sleutel/waardetabel itemproperties eenmaal voor elke afzonderlijke sleutel (eigenschap) die u moet ophalen. Het punt is dat je LEFT JOIN . moet gebruiken . Effen binnenste JOIN onderdrukt de uitvoerrij wanneer niet aan het join-criterium wordt voldaan.

Probeer dit.

SELECT i.ID as ItemID, i.Name as ItemName, 
       p1.Value AS Color, p2.Value AS Speed, p3.Value AS Price
  FROM items as i
  LEFT JOIN itemproperties AS p1 ON (i.ID=p1.ItemID) AND (p1.Name = 'Color')
  LEFT JOIN itemproperties AS p2 ON (i.ID=p2.ItemID) AND (p2.Name = 'Speed')
  LEFT JOIN itemproperties AS p3 ON (i.ID=p3.ItemID) AND (p3.Name = 'Price')

De uitdrukkingen die de Name . selecteren waarden (z.B. p3.Name = 'Price' ) ga in je ON clausule in plaats van uw WHERE clausule.



  1. Wat is de beste manier om te ontsnappen aan niet-opgemaakte tekens in to_char van Oracle?

  2. Omzeiling van SQL Server maximale kolommen limiet 1024 en 8kb recordgrootte

  3. MySQL LIMIT-clausule equivalent voor SQL SERVER

  4. linker join vermenigvuldigingswaarden