webForumDet fria alternativet

Rätt ID i multijoin

3 svar · 192 visningar · startad av FlashX

FlashXMedlem sedan nov. 19991 033 inlägg
#1

Undrar lite över hur man skiljer på ID:et i olika tabeller när dessa har samma namn.

$results = mysql_query("SELECT * " .
 "FROM products, id_category, id_products, id_designers " .
 "WHERE products.ID='$id' " .
 "AND products.category_id=id_category.ID " .
 "AND products.products_id=id_products.ID " .
 "AND products.designers_id=id_designers.ID", DB);

$result = mysql_fetch_array($results);

Om jag anger $result[ID] så kommer ID:et från tabellen id_designers att skrivas ut.
Hur gör jag om jag vill ha ID:et från t.ex första tabellen products
Nu har jag i.o.f.s. products.ID='$id' och man kan ju lägga tabellen sist i frågan.
Antar att man också kan ange ett alias på kolumnnivå men då måste man väl också ange samtliga kolumner i sql-frågan.
Finns det något enkelt sätt att plocka ut ID:et i ovanstående kod oavsett vilken tabell det gäller?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Enkelt sätt?

Utan att kunna vare sig MySQL eller PHP (jag inser att jag är inne på tunt vatten här ;) ), så tycker jag att det borde gå att använda index istället för kolumnnamn. Då krävs ju förstås att man vet hur resultatet ser ut.

Annars borde man kunna speca ID-fältet för sig, för att sedan också plocka in alla fält med *. Visserligen får du ju då ID-fälten med två gånger, men det är ju i alla fall enklare än att specificera alla kolumnnamn i frågan om man har många kolumner.

Mvh,

------------------
All your base are belong to me.

[Redigerat av @nders den 21 sep 2001]

FlashXMedlem sedan nov. 19991 033 inlägg
#3

Ju fler tabeller som tillkommer ju fler kolumner blir det och kan i slutändan bli rätt mycket att hålla reda på.
Vill gärna ha en så överskådlig sql-fråga som möjligt då det underlättar en hel del i arbetet.

Hur skulle ett exempel där man kan specifiera ID:et i tabellerna för att sedan lägga till alla kolumner med * se ut? :)

@ndersMedlem sedan juni 200032 969 inlägg
#4

Ett exempel:

SELECT A.ID AS IDA, B.ID AS IDB, A.*, B.* FROM tblA as A, tblB as B WHERE A.ID = B.ID_från_A

Detta är dock otestat, men det borde fungera. :)

Mvh,

------------------
All your base are belong to me.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)