Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JOIN - dwa razy z tej samej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
aceed
Cześć, chce do jednej (rc_projects) tabeli dokleić dwa pola (typ i state) z drugiej (rc_options) jednak nie są one związane z tym samym warunkiem, stąd w mojej koncepcji 2x JOIN z tej samej tabeli
  1. SELECT rc_projects. * , rc_options.value AS typ , rc_options.value AS sta
  2. FROM rc_projects
  3. LEFT JOIN rc_options ON ( rc_projects.type = rc_options.id )
  4. LEFT JOIN rc_options ON ( rc_projects.state = rc_options.id )
  5. GROUP BY rc_projects.id
  6. ORDER BY rc_projects.open DESC
  7. LIMIT 0 , 30
  8.  
  9. -- Not unique table/alias: 'rc_options'


Tak to nie dziala.
Efekt ma byc takie ze do pól (typ i state) sa przypisywane wartości (value) z tabeli (rc_options) znajdujace sie pod (id) które są podane w polach (typ i state) tabeli rc_projects.
Poglądowy taki sam efekt dałby poniższy skrypt PHP
  1. foreach($rc_projects as $k=>$v){
  2. $rc_projects[$v]["typ"]=$rc_options[$rc_projects[$v]["type"]];
  3. $rc_projects[$v]["sta"]=$rc_options[$rc_projects[$v]["state"]];
  4. }
  5.  


Ktoś ma pomysł?
Dziex i pozdr


nospor
musisz nadac ALIASY dla tabel z joina
aceed
własnie na to wpadłem smile.gif ale byłeś pierwszy, tak czy inaczej dzieki.
dziala jak poniżej
  1. SELECT rc_projects. * , a.value AS typ, b.value AS sta
  2. FROM rc_projects
  3. LEFT JOIN rc_options a ON ( rc_projects.type = a.id )
  4. LEFT JOIN rc_options b ON ( rc_projects.state = b.id )
  5. GROUP BY rc_projects.id
  6. ORDER BY rc_projects.open DESC
  7. LIMIT 0 , 30
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.