select query met veel fouten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SanderV

SanderV

24/01/2007 11:35:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$query = "SELECT klanten_id FROM klanten WHERE klanten_geslacht='V' & klanten_geaardheid='1 AND 3'" ;

Misshien kan iemand mij hiermee helpen
bvd
 
PHP hulp

PHP hulp

19/11/2024 21:29:02
 
Jacco Engel

Jacco Engel

24/01/2007 11:41:00
Quote Anchor link
SELECT klanten_id FROM klanten WHERE klanten_geslacht='V' & klanten_geaardheid=1 OR klant_geaardheid=3" ;
 
Klaasjan Boven

Klaasjan Boven

24/01/2007 11:46:00
Quote Anchor link
$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 ''
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Joren de Wit

Joren de Wit

24/01/2007 12:58:00
Quote Anchor link
Je mist nog een haakje Klaasjan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    klanten_id
FROM
    klanten
WHERE
    klanten_geslacht = 'v'
AND
    (klanten_geaardheid = 1 OR klanten_geaardheid = 3)
 
SanderV

SanderV

24/01/2007 14:00:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$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)";
 
Joren de Wit

Joren de Wit

24/01/2007 14:04:00
Quote Anchor link
Dit zou je met een UNION kunnen doen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)
 
SanderV

SanderV

24/01/2007 14:12:00
Quote Anchor link
Dat is gaaf, had nog nooit van een union select hoort.
Ik ben blij :)
 
Klaasjan Boven

Klaasjan Boven

24/01/2007 14:38:00
Quote Anchor link
Blanche schreef op 24.01.2007 12:58:
Je mist nog een haakje Klaasjan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    klanten_id
FROM
    klanten
WHERE
    klanten_geslacht = 'v'
AND
    (klanten_geaardheid = 1 OR klanten_geaardheid = 3)


Bedankt je hebt (weer) volkomen gelijk
 
SanderV

SanderV

24/01/2007 14:47:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];

$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
 
Joren de Wit

Joren de Wit

24/01/2007 14:53:00
Quote Anchor link
Hobbys van een bepaalde klant ophalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
        )

Natuurlijk kun je de 1 vervangen door een variabele.
 
SanderV

SanderV

24/01/2007 15:22:00
Quote Anchor link
Zou je dit misschien kunnen toelichten, ik begrijp de opbouw niet helemaal.
 
Joren de Wit

Joren de Wit

24/01/2007 15:36:00
Quote Anchor link
Tuurlijk:

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT
    DISTINCT klanten_id
(...)
 



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.