Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Łączenie tabel za pomocą kluczy obcych

Zakładając, że chcesz po prostu połączyć wszystko razem, jak sugerują klucze...

SELECT *
FROM table1
INNER JOIN table3 on table3.table1ID = table1.table1ID
INNER JOIN MEM_INSTR on MEM_INSTR.table2ID = table3.table2ID

Ale załóżmy, że masz taki scenariusz.

CREATE TABLE Table1 (
    Table1ID NUMBER, 
    Generation NUMBER, 
    ... 
);

CREATE TABLE Table2 (
    Table2ID NUMBER, 
    Table1ID NUMBER, 
    Table1Generation NUMBER, 
    ...
);

Załóżmy ze względu na argument, że Tabela1 może mieć wiele rekordów z tym samym identyfikatorem Table1ID, a Generowanie jest używane jako klucz pomocniczy. Musisz dołączyć rekord Table2 do poprawnego singla Rekord tabeli 1. Możesz rozwinąć ON klauzulę w taki sam sposób, w jaki rozwijasz WHERE klauzula.

SELECT *
FROM table1 t1
INNER JOIN table2 t2 
    ON t2.table1id = t1.table1id 
    AND t2.table1generation = t1.generation


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. podczas inicjowania PDO - czy powinienem zrobić:charset=UTF8 czy charset=UTF8MB4?

  2. Czy poniższy kod jest ważny?

  3. Pełne łączenie zewnętrzne SQL z wieloma tabelami

  4. Dodaj indeks MySql:0 wierszy, których dotyczy problem

  5. Jak szukać ukośnika (\) w MySQL? i dlaczego ucieczka (\) nie jest wymagana dla gdzie (=), ale dla Like jest wymagana?