Where bij Join
Hallo allemaal,
Ik heb de volgende (werkende) query:
Nu wil ik eigenlijk met een WHERE alleen een geselecteerd record tonen maar dat is in mijn geval een onjuiste syntax:
Hoe kan ik nu één record selecteren in geval van een JOIN??
George
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_name.iid='$cX' of
WHERE ftphp__indi.iid='$cX'
WHERE ftphp__indi.iid='$cX'
George, moet ik nu echt boos worden? (nee hoor).
Maar toch (ik weet niet hoe vaak ik dit hier op forum al gezegd heb), NOOIT maar dan ook NOOIT select * gebruiken met joins
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
Ger,
In mijn originele code plaats ik geen * maar de namen van de kolommen.
Kun je mij aangeven waarom dit niet gewenst is?
In mijn originele code plaats ik geen * maar de namen van de kolommen.
Kun je mij aangeven waarom dit niet gewenst is?
Omdat het heel snel leidt tot fouten en/of onverwachte resultaten.
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.
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?
Ja ik vind van wel, je gaat in PHP toch ook geen variabelen aanmaken waar je niks mee doet?
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 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.
Nee, ik bedoel dat ik gewoon ervoor zorg dat ik geen zelfde namen heb, ik join immers altijd met ID's.
Ik heb bijvoorbeeld:
id_gebruiker
gebruikersnaam
id_opleiding
id_gebruiker
schoolnaam
En dus niet
id_gebruiker
naam
id_opleiding
id_gebruiker
naam
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.
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 dat niet krijg je met fetch_assoc maar één waarde.
Toevoeging op 18/11/2012 18:41:44:
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.




