Where bij Join
Ik heb de volgende (werkende) query:
Code (php)
1
SELECT * FROM ftphp__indi JOIN ftphp__indi_name ON ftphp__indi.iid = ftphp__indi_name.iid '
Nu wil ik eigenlijk met een WHERE alleen een geselecteerd record tonen maar dat is in mijn geval een onjuiste syntax:
Code (php)
1
SELECT * FROM ftphp__indi JOIN ftphp__indi_name ON ftphp__indi.iid = ftphp__indi_name.iid WHERE iid = '$cX'
Hoe kan ik nu één record selecteren in geval van een JOIN??
George
WHERE ftphp__indi.iid='$cX'
Maar toch (ik weet niet hoe vaak ik dit hier op forum al gezegd heb), NOOIT maar dan ook NOOIT select * gebruiken met joins
Gewijzigd op 17/11/2012 17:55:15 door Ger van Steenderen
In mijn originele code plaats ik geen * maar de namen van de kolommen.
Kun je mij aangeven waarom dit niet gewenst is?
Als je bv in de 2 tabellen een kolom hebt staan met een identieke naam maar verschillende waardes, krijg je met fetch_assoc de waarde uit de tweede tabel.
Daarnaast heb je maar zelden alle kolommen nodig uit de twee tabellen.
Oke Ger, ik heb dat eens meegemaakt dat ik inderdaad identieke velden had, sindsdien heb ik altijd unieke velden in mijn database, is het dan nog steeds verkeerd?
Ik had toevallig gister nog een query over 9 tabellen. Daar zaten een paar koppeltabellen tussen, en daar heb je sowieso de kolommen niet van nodig.
Ik heb bijvoorbeeld:
id_gebruiker
gebruikersnaam
id_opleiding
id_gebruiker
schoolnaam
En dus niet
id_gebruiker
naam
id_opleiding
id_gebruiker
naam
Quote:
Oke Ger, ik heb dat eens meegemaakt dat ik inderdaad identieke velden had, sindsdien heb ik altijd unieke velden in mijn database, is het dan nog steeds verkeerd?
Nogmaals, ja ik vind van wel.
Een simpel voorbeeld
tabelA
a_id
a_name
a_email
a_nogwat
tabelB
b_id
b_title
b_description
b_ietsanders
tabelAB
a_id
b_id
Als je hier een SELECT * op uitvoert krijg je negen kolommen, terwijl je er maar misschien maar vier nodig hebt
Gewijzigd op 18/11/2012 13:11:56 door Ger van Steenderen
Wat ik niet duidelijk vind, is id_gebruiker in een gebruikers tabel. Dit heeft toch geen toegevoegde waarde? Als je een SELECT doet over meerdere tabellen doe je toch: gebuiker.id en anders zou het zijn gebruiker.id_gebruiker. Je kan niet altijd unieke kolomnamen hebben. Stel je hebt een tabel met namen van steden en een tabel met namen van landen, in beide tabellen heb je namen. Alleen als je prefixed krijg je verschillende, maar daarom zijn die puntjes er juist.
Toevoeging op 18/11/2012 18:41:44:
Ger van Steenderen op 18/11/2012 18:40:58:
Dat is niet helemaal correct, ook al prefix je dan weet mysql weliswaar welke kolom je bedoelt, maar zul je in PHP met fetch_row moeten werken, of anders de kolommen in de query gaan aliassen, want doe je dat niet krijg je met fetch_assoc maar één waarde.