sql >> Database >  >> RDS >> Mysql

Meerdere tabellen samenvoegen zonder gemeenschappelijke sleutel

Een mogelijke benadering:

SELECT l.Item, m.name, c.Color
      FROM linkage_Table AS l
INNER JOIN Material_Table AS m
        ON l.Material = '*'
           OR l.Material = m.name
INNER JOIN Color_Table AS c
        ON l.Color = '*'
           OR l.Color = c.Color

SQL Fiddle

Uitleg:de query moet zo worden gebouwd dat de tabellen 'materiaal' en 'kleur' ​​ofwel volledig worden samengevoegd (cross-join), wanneer '*' wordt gegeven in het overeenkomstige veld, of door gelijkheid van deze velden. En dat is precies wat we kregen door 'ON l.someField = '*' OR l.someField = joined.someField' te gebruiken clausule.



  1. Haal het Oracle-tabeltype op uit de opgeslagen procedure met behulp van JDBC

  2. Hoe zou ik MySQL count(*) in Doctrine2 doen?

  3. Django Rest Framework-paginering extreem traag tellen

  4. MYSQL Parent Child Dezelfde tabel; PHP Nest Children Within Parents als een multidimensionale array