Hallo,
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.

$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" ;
$query = "SELECT klanten_id FROM klanten WHERE klanten_geslacht='v' AND ( klanten_geaardheid= 1 OR klanten_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 ''[/edit]
Je mist nog een haakje Klaasjan:

SELECT
    klanten_id
FROM
    klanten
WHERE
    klanten_geslacht = 'v'
AND
    (klanten_geaardheid = 1 OR klanten_geaardheid = 3)
Nu wil ik een stapje verder gaan.

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.

$query = "SELECT * FROM klanten WHERE klanten_geslacht = 'M' (klanten_geaardheid = 1 OR klanten_geaardheid = 3) AND klanten_geslacht = 'V' (klanten_geaardheid = 2 OR klanten_geaardheid = 3)";
Dit zou je met een UNION kunnen doen.

SELECT 
    klanten_id
FROM 
    klanten
WHERE 
    klanten_geslacht = 'm'
AND 
    (klanten_geaardheid = 1 OR klanten_geaardheid = 3)
UNION SELECT
    klanten_id
FROM
    klanten
WHERE
    klanten_geslacht = 'v'
AND
    (klanten_geaardheid = 2 OR klanten_geaardheid = 3)
Dat is gaaf, had nog nooit van een union select hoort.
Ik ben blij :)
Blanche schreef op 24.01.2007 12:58
Je mist nog een haakje Klaasjan:

SELECT
    klanten_id
FROM
    klanten
WHERE
    klanten_geslacht = 'v'
AND
    (klanten_geaardheid = 1 OR klanten_geaardheid = 3)


Bedankt je hebt (weer) volkomen gelijk
Ok ik ben op dreef, maar ik kan niks hahaha.
(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.

$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']; 

$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
Hobbys van een bepaalde klant ophalen:

SELECT
    hobby
FROM
    klanten_hobby_koppel
WHERE
    klanten_id = 1

Nu kunnen we deze query gebruiken als een subquery om alle klanten te selecteren met minimaal 1 overeenkomende hobby:

SELECT
    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.

Reageren