sql >> Databáze >  >> RDS >> Mysql

jak získat hodnotu z tabulky mysql uspořádané jinou tabulkou?

Kromě sloupce ReferenceType v tabulce ref_types potřebujete také sloupec Reference_ID, který odkazuje na skutečné ID v odpovídající tabulce jako cizí klíč .

//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

Pak se můžete vyhnout smyčce WHILE a nechat MySQL dělat práci za vás pomocí JOINů:

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

Výsledkem je:

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


  1. Exportujte data RDS do S3/Glacier

  2. Vrátit aktuální přihlašovací jméno na SQL Server (T-SQL)

  3. Získejte výsledek uložené procedury Laravel

  4. Jak doleva spojit 2 tabulky ve 2 různých databázích?