sql >> Databasteknik >  >> RDS >> Mysql

hur får man värde från mysql-tabellen beställd av en annan tabell?

Förutom att ha ReferenceType-kolumnen i ref_types-tabellen behöver du också en Reference_ID-kolumn som refererar till det faktiska ID:t i motsvarande tabell som en främmande nyckel .

//ref_types table
ID Article_ID ReferenceType Reference_ID
1  1          book          1
2  1          article       1
3  1          article       2
4  1          book          2

Då kan du undvika en WHILE-loop och låta MySQL göra jobbet åt dig med JOINs:

SELECT CONCAT('record ', rt.ID, ': ',
  COALESCE(ar.Article_Title, tr.Thesis_Title, br.Book_Title))
FROM ref_types rt
LEFT JOIN article_refs ar
  ON rt.ReferenceType = 'article' AND ar.ID = rt.Reference_ID
LEFT JOIN book_refs br
  ON rt.ReferenceType = 'book' AND br.ID = rt.Reference_ID
LEFT JOIN thesis_refs tr 
  ON rt.ReferenceType = 'thesis' AND tr.ID = rt.Reference_ID

Ger resultatet:

record 1: book1
record 2: article1
record 3: article2
record 4: book2


  1. hur fixar jag (2002, kan inte ansluta till lokal MySQL-server via socket '/tmp/mysql.sock' (2)) på ec2 bitnami?

  2. Kan Sqlalchemy fungera bra med flera bifogade SQLite-databasfiler?

  3. Tidsskillnad mellan per person mellan på varandra följande rader

  4. Glömt lösenordsskript PHP mysqli-databas