Where bij Join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

17/11/2012 13:07:08
Quote Anchor link
Hallo allemaal,

Ik heb de volgende (werkende) query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

17/11/2024 23:30:00
 
Albert de Wit

Albert de Wit

17/11/2012 14:22:07
Quote Anchor link
WHERE ftphp__indi_name.iid='$cX' of
WHERE ftphp__indi.iid='$cX'
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/11/2012 17:54:23
Quote Anchor link
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
Gewijzigd op 17/11/2012 17:55:15 door Ger van Steenderen
 
George van Baasbank

George van Baasbank

17/11/2012 18:29:45
Quote Anchor link
Ger,
In mijn originele code plaats ik geen * maar de namen van de kolommen.
Kun je mij aangeven waarom dit niet gewenst is?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/11/2012 18:49:01
Quote Anchor link
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.
 
Albert de Wit

Albert de Wit

17/11/2012 19:00:52
Quote Anchor link
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?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

17/11/2012 19:21:15
Quote Anchor link
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.
 
Albert de Wit

Albert de Wit

17/11/2012 20:32:16
Quote Anchor link
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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

18/11/2012 13:11:27
Quote Anchor link
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
 
LEDfan nvt

LEDfan nvt

18/11/2012 17:46:02
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

18/11/2012 18:40:58
Quote Anchor link
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:

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.