Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Złączenie 3 tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
Kshyhoo
Myślę i myślę i nie mogę skumać. Otóż:
  1. users
  2. id | name
  3. --+-------------
  4. 1 | Novak
  5. 2 | Kovalski
  6. 3 | Cebula
  7.  
  8. adventure
  9. id | name
  10. --+-------------
  11. 1 | PO
  12. 2 | PiS
  13.  
  14. drops (przechowywane ID i czas)
  15. id | adv | user1 | user2 | user3 | datetime
  16. ---+-----+-------+-------+-------+-----------
  17. 1 | 1 | 1 | 3 | 2 | 1473542311
  18. 2 | 2 | 2 | 3 | 1 | 1473600401

Chciałbym osiągnąć:
  1. id | adv | user1 | user2 | user3 | datetime
  2. ---+-----+----------+----------+----------+-------------
  3. 1 | PO | Novak | Cebula | Kovalski | 1473542311
  4. 2 | PiS | Kovalski | Cebula | Novak | 1473600401

Moje zapytanie znajduje ID a nie nazwy:
  1. SELECT
  2. d.id,
  3. d.adv,
  4. d.user1,
  5. d.user2,
  6. d.user3
  7. FROM drops d
  8. LEFT JOIN users u ON u.id=d.id
  9. LEFT JOIN adventure a ON a.id=d.id
trueblue
Na pewno nie u.id=d.id ani a.id=d.id (id w drops to klucz główny, pewnie autoincrement i ma się nijak do kluczy obcych dla users i adventure).
  1. SELECT d.id,a.name,u1.name,u2.name,u3.name,d.datetime
  2. FROM drops d
  3. LEFT JOIN users u1 ON u1.id=d.user1
  4. LEFT JOIN users u2 ON u2.id=d.user2
  5. LEFT JOIN users u3 ON u3.id=d.user3
  6. LEFT JOIN adventure a ON a.id=d.adv
Kshyhoo
Dziękuję.

Eh, w phpMyAdmin:
id name name name name datetime
Ale w PHP:
  1. array(29) {
  2. [0]=>
  3. array(3) {
  4. ["id"]=>
  5. string(1) "1"
  6. ["name"]=>
  7. string(8) "Kovalski"
  8. ["datetime"]=>
  9. string(1) "1473542311"
  10. }

trueblue
Zastosuj aliasy do pól: u1.name AS name1,u2.name AS name2,u3.name AS name3.
Pobierasz w trybie asocjacyjnym i nadpisuje się wartość indeksu "name".
Kshyhoo
To było to, jeszcze raz wielkie dzięki.
sankalppatil732
Here is a general SQL query syntax to join three or more table. This SQL query should work in all major relation database e.g. MySQL, Oracle,

SELECT t1.col, t3.col FROM table1 join table2 ON table1.primarykey = table2.foreignkey
join table3 ON table2.primarykey = table3.foreignkey


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.