Du får specificera de fält du vill ha ut, och ge dem alias i frågan.
SELECT tabell1.ID as t1ID, tabell2.ID as t2ID... FROM ...
Referera sedan till aliasnamnen t1ID, t2ID, etc.
Mvh
8 svar · 985 visningar · startad av prplxr
God morgon! Nu är jag i farten igen. Eller snarare, nu har min fart avtagit igen...
Jag sitter och gör ett uppslag mot min MySQL med en LEFT JOIN. När jag skriver ut resultatet vill jag dock inte använda numrerade index utan jag vill använda namnet på fälten i databasen, men det tycks inte gå något vidare.
Exempelvis:
$sql = "SELECT * FROM tabell1 LEFT JOIN tabell2 ON tabell1.apa = tabell2.banan";
...
echo $row['apa'] . $row['tabell2.banan'];
Båda två ger ett felmeddelande a la "Undefined index".
Någon vänlig själ som känner sig manad att ge mig en knuff i rätt riktning?
Du får specificera de fält du vill ha ut, och ge dem alias i frågan.
SELECT tabell1.ID as t1ID, tabell2.ID as t2ID... FROM ...
Referera sedan till aliasnamnen t1ID, t2ID, etc.
Mvh
Fungerar, tack! :-)
Jag flyttar tråden en liten, liten aning. :)
Det borde f.ö. bara vara problem med fältnamn som finns i bägge tabellerna i din join - så det är bara de fält du behöver ge alias. (Det är dock alltid en bra idé att specificera fälten man vill ha, istället för att använda SELECT *.)
mvh
Det borde f.ö. bara vara problem med fältnamn som finns i bägge tabellerna i din join
Ja, jag tyckte ju också det, men faktum är att gäller ALLA fält, oavsett om de finns i båda tabellerna. Det går inte att använda alias alls när jag gör en join.
Konstigt. Kanske är någon MySQL-specialitet jag inte känner till - jag jobbar mest med andra DBMS.
mvh
Något annat du kan pröva är att köra print_r($row); och se vad arrayen faktiskt innehåller när du kör frågan utan alias för de fälten.
Om det finns kolumner i de två tabellerna som heter samma sak, så kommer * att ta ut mer än en kolumn som har samma namn (minst ett par lika-namnade kolumner). Utan att vara säker, så tror jag att det kan ställa till det i result set:et. Alltså så att result set:et inte alls fungerar, även för kolumner som har unika namn. Det kan vara förklaringen.
Om det finns kolumner i de två tabellerna som heter samma sak, så kommer * att ta ut mer än en kolumn som har samma namn (minst ett par lika-namnade kolumner). Utan att vara säker, så tror jag att det kan ställa till det i result set:et. Alltså så att result set:et inte alls fungerar, även för kolumner som har unika namn. Det kan vara förklaringen.
Det kan mycket väl vara så! När jag hämtar * från en tabell med en eller flera JOINs annars fungerar det att använda namnen på tabellerna som alias.