prplxrMedlem sedan juni 2012582 inlägg 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?
@ndersMedlem sedan juni 200032 969 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg 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
prplxrMedlem sedan juni 2012582 inlägg
@nders skrev:
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.
@ndersMedlem sedan juni 200032 969 inlägg 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.
aasahMedlem sedan mars 20034 471 inlägg 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.
prplxrMedlem sedan juni 2012582 inlägg
aasah skrev:
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.