Hoi Allen,

Ik ben zelf al een tijdje aan het klooien geweest en loop tegen het volgende op.

Als je een innerjoin doet en je wilt bijv. van beide tabellen alle kolommen hebben en je wil dat wegschrijven naar een array o.i.d. dan kom je in de knoop met zelfde kolomnamen.

Is het mogelijk dat je de tabelnaam erbij kunt krijgen.
voorbeeld:
SELECT `u` . * , `b` . *
FROM `user` AS `u`
INNER JOIN `bank` AS `b` ON `b`.`userid` = `u`.`userid`

geeft bijvoorbeeld dit terug:
userid username password userid amount

alleen amount komt uit de andere (bank) tabel. Als ik deze resultaten uitlees met php (en het bijv. in een object of array knal) dan overschrijft hij de waarde userid. Dit geval niet erg, maar dit is een voorbeeld

Mijn vraag is dus:
Is het mogelijk om voor de kolomnamen een tabel naam te zetten zodat je het volgende krijgt;
user_userid user_username user_password bank_userid bank_amount

Ja, maar dan zul je dit handmatig moeten doen.


SELECT
  u.userid user_userid, 
  u.username user_username, 
  u.password user_password, 
  b.userid bank_userid, 
  b.amount bank_amount


Een andere oplossing zou zijn "mysql_fetch_row(...)" (als je MySQL gebruikt) gebruiken maar dan zit je met de volgorde van de kolommen. En * gebruiken in je select is bijna nooit nodig en ook niet erg snel. Ik zou voor de bovenste oplossing gaan.
Gebruik aliassen:

SELECT
  u.userid AS users_usersid,
  b.userid AS bank_userid,
  ...

De betreffende waarden zijn nu te vinden in de velden users_userid en bank_userid.

ps. Zelfde oplossing als Martijn, overigens wel grappig dat we dezelfde aliassen kiezen :)
Je hebt toch alles al.
user_userid is hetzelfde als bank_userid .
SanThe schreef op 23.12.2009 23:18
Je hebt toch alles al.
user_userid is hetzelfde als bank_userid .
In dit geval maakt het inderdaad niet uit, maar ik kan me voorstellen dat je twee tabellen met bijvoorbeeld de kolom 'name' hebt die niet in beide tabellen dezelfde waarde bevat. Dan hangt het er wel degelijk vanaf uit welke tabel de waarde komt ;-)
maar met een ster is dat mogelijk?


//edit

@santhe;
Ik heb alle waarden idd. al maar ik ben gewoon benieuwd of het mogelijk is datje de tabelnaam voor een kolomnaam kan plaatsen.

Ik snap ook dat * niet efficiƫnt is, maar ik ben gewoon benieuwd of het mogelijk is :) Puur interesse zo op een later woensdagavond :)
Nee, dat gaat niet werken. Maar hoeveel moeite is het om de benodigde velden in je query uit te schrijven? Dat komt bovendien de duidelijkheid van je code waarschijnlijk wel ten goede...
zoals ik zeg,

ik was benieuwd of het uberhaupt mogelijk was.


Ja ik vraag me soms graag bepaalde zaken af :)

Reageren