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

Jak mohu odkazovat na nadřazenou tabulku ve spojení s více tabulkami?

Výsledky, které získáte, jsou očekávané. Měli byste mít jiné id pro C++ a to by vedlo k požadovaným výsledkům.

Musíte přidat a ID sloupec v B tabulku, kterou byste použili v C tabulky (jako cizí klíč), abyste mohli filtrovat výsledky.

Oprava tohoto problému s návrhem databáze vám pomůže vyřešit tento problém, protože váš současný návrh je chybný.

Výsledný dotaz by měl vypadat takto:

SELECT *
FROM A
   LEFT OUTER JOIN B ON A.id = B.pid
   LEFT OUTER JOIN C ON A.id = B.pid AND C.newForeignKeyId=B.newId;

Také bych doporučil použít IDENTITY id sloupce, které se automaticky zvyšují, takže nenarazíte na problémy s integritou.




  1. Mínus vs kromě rozdílu v ORACLE/SQL Server

  2. PHP a MySQL - Zkontrolujte, zda je uživatelské jméno již obsazeno

  3. Vyberte řádek s nejnovějším datem na uživatele

  4. Proč v psql nemají některé příkazy žádný účinek?