sql >> Database teknologi >  >> RDS >> Mysql

Dynamiske kolonner i SQL Select-sætning, der beholder udefinerede værdier

Du er meget tæt på. Du skal tilslutte din nøgle-/værditabel itemproperties én gang for hver særskilt nøgle (egenskab), du skal hente. Sagen er, at du skal bruge LEFT JOIN . Almindelig indre JOIN undertrykker outputrækken, når sammenføjningskriteriet ikke er opfyldt.

Prøv dette.

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')

Udtrykket, der vælger Name værdier (z.B. p3.Name = 'Price' ) gå ind i din ON klausul i stedet for din WHERE klausul.



  1. Indsæt data i flere tabeller ved hjælp af én formular

  2. Opdeling af kommaseparerede værdier i kolonner til flere rækker i SQL Server

  3. PHP PDO MySQL-forespørgsel LIKE -> flere søgeord

  4. Flere skær med PDO