sql >> Database >  >> RDS >> Mysql

MySQL-resultatenset converteren van rijen naar kolommen

Mmmm... EAV's. Een van de vele redenen om EAV's (entity-attribute_value) te vermijden, is dat ze moeilijker te rapporteren en te doorzoeken zijn. Als de gewenste kenmerken echter van tevoren bekend zijn, kunt u iets doen als:

Select id
    , Min( Case When name = 'Make' Then attribute_value End ) As Make
    , Min( Case When name = 'Year' Then attribute_value End ) As Year
    , Min( Case When name = 'Type' Then attribute_value End ) As Type
    , Min( Case When name = 'Axles' Then attribute_value End ) As Axles
    , Min( Case When name = 'Size' Then attribute_value End ) As Size
    , Min( Case When name = 'Frame' Then attribute_value End ) As Frame
    , ...
From attributes
Where name In('Make','Year','Type','Axles','Size','Frame',....)
Group By id

Nu heeft MySQL een GROUP_CONCAT waarmee je meerdere waarden voor hetzelfde attribuut in een lijst kunt samenvoegen als je dat toestaat (bijvoorbeeld als een entiteit meerdere Make-attributen kan hebben).



  1. Opgeslagen procedure aanroepen met tabelwaardeparameter uit java

  2. Hoe de datum-tijd in UTC op te slaan in een database met behulp van EclipseLink en Joda-Time?

  3. SQL Server invoegen indien niet bestaat best practice

  4. Hoe kan ik het mysql-wachtwoord instellen in het mysqld_safe draait-scenario?