Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP, MySQL - Ako načítať stĺpce s rovakými názvami pri viacerých tabuľkách v SELECT?

Mám dve tabuľky, povedzme, že je tam štruktúra táto:

1. tabuľka TAB1

ID, abc, def, ghi

2. tabuľka TAB2

ID, jkl, mno

Tieto tabuľky spojím pomocou SELECT:

$sql = mysql_query("select * from tab1, tab2 where ghi=mno", $db);
$rec = mysql_fetch_array($sql);

Teraz chcem načítať hodnotu ID prvej tabuľky:

id1 = $rec[id];

Dostanem hodnotu ID druhej tabuľky TAB2, pretože v zozname položiek je ako posledné ID, ID tej druhej tabuľky TAB2. Aby som dostal ID prvej tabuľky TAB1, tak v SELECT tie tabuľky vymením:

$sql = mysql_query("select * from tab2, tab1 where ghi=mno", $db);

Lenže toto sa mi nezdá ako celkom čisté riešenie. Prípadne budem chcieť zistiť aj hodnotu ID TAB2. Je nejaký spôsob ako tieto údaje vyčítať, aby som ich nemusel za SELECT vypisovať?

$sql = mysql_query("select tab1.id, tab1.asd, tab1.def, tab1.ghi, tab2.id, tab2.jkl, tab2.mno from tab1, tab2 where ghi=mno", $db);
Předmět Autor Datum
Môžeš si ten stĺpec vybrať zvlášť pod nejakým aliasom: select tab1.id as moje_id, * from ... Alebo…
los 05.03.2008 18:48
los
Áno, tá prvá možnosť sa mi zdá najvhodnejšia. Ale vôbec ma nenapadlo, že sa to dá kombinovať s hviez… poslední
msx. 06.03.2008 08:50
msx.

Môžeš si ten stĺpec vybrať zvlášť pod nejakým aliasom:

select tab1.id as moje_id, * from ...

Alebo môžeš vybrať z druhej tabuľky len tie stĺpce, ktoré ťa zaujímajú (ak je medzi tými stĺpcami aj to druhé id, tak opäť treba alias):

select tab1.*, tab2.jkl, tab2.id as moje_druhe_id ... from ...

Alebo najlepšie vymenovať všetky stĺpce a použiť alias kde treba, ale to si asi nechcel počuť. ;-)

Áno, tá prvá možnosť sa mi zdá najvhodnejšia. Ale vôbec ma nenapadlo, že sa to dá kombinovať s hviezdičkou. Keby ma to napadlo ani sa nepýtam, takže ďakujem. Ono by som to mohol vlastne nechať tak ako to je, ale nevyzeralo by to dobre. V prípade zmien by som to mohol náhodou zmeniť a potom by som hľadať chybu celú večnosť.

Zpět do poradny Odpovědět na původní otázku Nahoru