select query met veel fouten
Ik ben ronduit niet goed in het maken van sql query's. nu heb ik het wel een beetje zitten proberen en ik heb de klok horen luiden. Nu hoop ik dat jullie mij kunnen helpen met het zoeken naar de klepel
De bedoeling van onderstaande query is dat ik alle vrouwen (gelsacht V) welke hetero (type 1) én Bi (type 3) zijn ik heb het volgende zitten uitwerken, maar ik weet dus niet hoe ik achter de where meerdere gegevens kan toevoegen.
Code (php)
1
$query = "SELECT klanten_id FROM klanten WHERE klanten_geslacht='V' & klanten_geaardheid='1 AND 3'" ;
Misshien kan iemand mij hiermee helpen
bvd
SELECT klanten_id FROM klanten WHERE klanten_geslacht='V' & klanten_geaardheid=1 OR klant_geaardheid=3" ;
TIP gebruik altijd kleine letters er is geen enkele reden om geslacht met een V te doen ipv van v. Is alleen maar verwarrend
Edit:
INTEGERS hoefen niet tussen ''
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
In deze query dienen bi vrouwen gekoppeld te worden aan de goede personen. Dit kan dus zijn bi mannen, hetero mannen, bi vrouwen en homo vrouwen.
Ik moet dus een soort selectie maken in mijn query.
Ik wil dus alle mannen selecteren waar geaardheid 1 of 3 is. En ik wil alle vrouwen selecteren waar geaardheid 2 of 3 is.
Is dit mogelijk in 1 query?
Ik had al een klein beginnetje gemaakt, maar ik weet niet zeker of dit juist is.
Ik ben blij :)
Blanche schreef op 24.01.2007 12:58:
Bedankt je hebt (weer) volkomen gelijk
(ja ik wordt er zelf ook een beetje simpel van)
Wat ik nu graag voor elkaar zou willen krijgen: ik heb een koppeltabel. hierin staan de records hobby en klant_id. Nu wil ik van de klant waar ik mee aan het werk ben $klanten_id alle hobbies van deze klant uit deze tabel halen.
Vervolgens wil ik met deze uitkomst alle hobbies vergelijken en iedereen die 1 overeenkomende hobbie heeft met $klanten_id moet hieruit komen. Dit probeer ik met de volgende query, alleen het probleem is dat hij maar 1 hobby uit de tabel klanten_hobby_koppel haalt terwijl deze gebruiker meer hobbies heeft.
En wanneer ik alle gebruikers die ook een van deze hobbies hebben wil ophalen dan krijg ik ook maar 1 gebruiker. Dat is dan de eerste in de tabel die ook van film kijken houdt.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$query = "SELECT * FROM klanten_hobby_koppel where klanten_id='".$klanten_id."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$hobby = $row['hobby'];
$query = "SELECT * FROM klanten_hobby_koppel where hobby='".$hobby."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$matchmogid = $row['klanten_id'];
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$hobby = $row['hobby'];
$query = "SELECT * FROM klanten_hobby_koppel where hobby='".$hobby."'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$matchmogid = $row['klanten_id'];
$matchmogid is dus een afkorting van match mogelijkheid id. Dit moeten dus alle klanten zijn die minimaal 1 hobby overeenkomen met $klanten_id.
Ik hoop dat ik het een klein beetje duidelijk heb uitgelegd. Anders hoor ik het graag.
bvd
Nu kunnen we deze query gebruiken als een subquery om alle klanten te selecteren met minimaal 1 overeenkomende hobby:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
klanten_id
FROM
klanten_hobby_koppel
WHERE
hobby IN (
SELECT
hobby
FROM
klanten_hobby_koppel
WHERE
klanten_id = 1
)
klanten_id
FROM
klanten_hobby_koppel
WHERE
hobby IN (
SELECT
hobby
FROM
klanten_hobby_koppel
WHERE
klanten_id = 1
)
Natuurlijk kun je de 1 vervangen door een variabele.
Zou je dit misschien kunnen toelichten, ik begrijp de opbouw niet helemaal.
De eerste query is de query waarmee je de hobbies van een bepaalde klant seleecteert. Hiermee haal je dus alle hobbies van een bepaalde klant op.
Vervolgens maak ik een tweede query waarbij ik klanten met een bepaalde hobby ophaal. En wel alle klanten waarbij (een van) hun hobby('s) voorkomt in het resultaat van de eerste query (de hobbies van die ene klant).
Je zou alleen nog DISTINCT kunnen toevoegen om elke klant die een overeenkomende hobby heeft maar 1 keer op te halen. Anders wordt die klant namelijk bij elke overeenkomende hobby opgehaald...