Autor Zpráva
peter_r
Profil
toto je výpis z jednej tabuľky:

$clanky = Db::queryAll('
        SELECT *
        FROM clanky3
        ORDER BY priezvisko, meno
        
');

foreach ($clanky as $clanek)
  {
    echo('<tr><td>' . htmlspecialchars($clanek['priezvisko']) . '</td>
                    <td>' . htmlspecialchars($clanek['meno']).'</td>
                    <td>' . htmlspecialchars($clanek['odmh']).'</td></tr>');
   }

potrebujem k tomu ešte vypísať údaj z inej tabuľky s názvom clanky2, zo stĺpca s rovnakým názvom odmh

obe tabuľky majú rovnaké ID

Vie mi prosím niekto pomôcť? Ďakujem.
Kajman
Profil
Stačí jednoduchý join a alias, aby sloupec neměl duplicitní název. Něco jako
SELECT c3.*,
       c2.odmh c2_odmh
FROM   clanky3 c3
       LEFT JOIN clanky2 c2
              ON c3.id = c2.id
ORDER  BY c3.priezvisko,
          c3.meno
peter_r
Profil
perfektné, ďakujem

a ako by to bolo, keby som ešte chcel vytiahnuť rovnaký stĺpec odmh z tretej tabuľky clanky1?
Kajman
Profil
Obdobně. Napište, co jste vyplodil.
peter_r
Profil
dal by som to takto ale s tým c3.id = c2.id = c1.id si myslím že bude blbosť

SELECT c3.*,
       c2.odmh c2_odmh,
       c1.odmh c1_odmh
FROM   clanky3 c3
       LEFT JOIN clanky2 c2, clanky1 c1
              ON c3.id = c2.id = c1.id
ORDER  BY c3.priezvisko,
          c3.meno
Kajman
Profil
Když kliknete na join, uvidíte povolenou syntaxi. Spíše budete chtít druhý left join.
peter_r
Profil
alebo cez AND ?

ON c3.id = c2.id AND c3.id = c1.id



no dal som to cez AND ale vyhodilo mi chybu

SELECT c3.*,
       c2.odmh c2_odmh,
       c1.odmh c1_odmh
FROM   clanky3 c3
       LEFT JOIN clanky2 c2, clanky c1
              ON c3.prac_id = c2.prac_id AND c2.prac_id = c1.prac_id
ORDER  BY c3.priezvisko,
          c3.meno

tak som to dal takto a vyzerá to byť OK

SELECT c3.*,
       c2.odmh c2_odmh,
       c1.odmh c1_odmh
FROM   clanky3 c3
       LEFT JOIN clanky2 c2
              ON c3.prac_id = c2.prac_id
       LEFT JOIN clanky c1
              ON c3.prac_id = c1.prac_id
ORDER  BY c3.priezvisko,
          c3.meno

môže to byť?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0