Adat elérése JOIN-olt MySQL lekérdezés után.
Sziasztok!
Ha van egy olyan mysql lekérdezésem, amiben JOIN-nal összekapcsolok két táblát, és szerencsétlenül vannak azonos nevű mezők a táblákban, akkor az azonos mezők adatait ezidáig így adtam át változónak:Most viszont egy már kialakított lekérdezésben kellene hasonló atrakciót végrehajtanom, de ott ez a helyzet:Ilyen esetben hogyan tudom elérni az azonos nevű mezőket? Így próbáltam, de mindíg üres marad a változó:Bizonyára van elképzelésetek a megoldásról, kérlek osszátok meg velem!
s_volenszki
■ Ha van egy olyan mysql lekérdezésem, amiben JOIN-nal összekapcsolok két táblát, és szerencsétlenül vannak azonos nevű mezők a táblákban, akkor az azonos mezők adatait ezidáig így adtam át változónak:
...
$tabla_1 = "tabla1";
$tabla_2 = "tabla2";
$query = mysql_query("SELECT * FROM `$tabla_1` JOIN `$tabla_2` ON $tabla_2.id = $tabla_1.id_tabla2");
...
for($i=0;..){
$azonosmezo_1 = mysql_result($query,$i,$tabla_1.".azonosmezonev");
$azonosmezo_2 = mysql_result($query,$i,$tabla_2.".azonosmezonev");
}
...
...
$tabla_1 = "tabla1";
$tabla_2 = "tabla2";
$query = mysql_query("SELECT * FROM `$tabla_1` JOIN `$tabla_2` ON $tabla_2.id = $tabla_1.id_tabla2");
...
while($item = mysql_fetch_array($query, MYSQL_ASSOC))
{
$item_id = $item['id_item'];
}
...
...
while($item = mysql_fetch_array($query, MYSQL_ASSOC))
{
$azonosmezo_1 = $item[$tabla_1.'.azonosmezonev'];
$azonosmezo_2 = $item[$tabla_2.'.azonosmezonev'];
}
...
s_volenszki
Explicit fel kell sorolni a mezőket
Kódoláskor is segít, hogy a query-ben látod az oszlopneveket az editorban, amikkel utána dolgozol és nem kell valami segédprogrammal nézegetni a táblaszerkezetet.
Egyetlen hátránya, hogy sokat kell gépelni :)
Alias
Ez azt jelenti, hogy az azonos mezőneveket így kérdezem le:
Történetesen minden mezőre szükség van, de általánosságban megfontolom a javaslatodat!
its a kind of magic
. "FROM table1 t1, table2 t2 "
. "WHERE t1.id=t2.id";
$result = mysql_query($query);
$items = array();
$i = 0;
while(($item = mysql_fetch_array($result, MYSQL_ASSOC) != false) {
$items[$i]['id1'] = $item['id1'];
$items[$i]['id2'] = $item['id2'];
$items[$i]['column1'] = $item['column1'];
$items[$i]['column2'] = $item['column2'];
$i++;
}
mysql_free_result($result);
az összes mezőre ajánlom a SELECT t1.* megoldást