Toon posts:

[SQL] Select probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben momenteel bezig om in PHP en MySQL 4.0.X wat te programeren daarbij loop ik aan tegen het volgende:

Veronderstel dat ik onderstaande tabel heb:

code:
1
2
3
4
5
6
7
ID        FOTOID                  CATID 
1             1                      10 
2             1                      20
3             1                      25
4             2                      10
5             3                      20
6             3                      25


NU wil ik al die foto_id's in een array krijgen waarbij de FOTOID zowel in CATID 10 als 20 behoord. Dit zijn dus enkel de id's 1 en 2 (heb het over de ID kolom) en dit is dus fotoid nr 1.

Echter krijg ik dit niet voor mekaar met een enkel SQL query aangezien deze vergelijkingen maakt per rij en niet over zijn geheel. Heb nu dus een hele leuke ingewikkelde PHP code die controleerd dmv in_array of een bepaalde foto_id in beide categorien voorkomt. Dit is dus enorm inefficient, nu is mijn vraag is het mogelijk om dit ook te doen dmv een SQL-query??

[Onderstaande werkt NIET]
SELECT fotoid FROM TABEL WHERE catid='10' AND catid='20'
SELECT fotoid FROM TABEL WHERE catid='10' OR catid='20'

Is logsiche maar toch, anders krijg je van die vragen of je het zelf wel hebt geprobeerd ;)

[ Voor 14% gewijzigd door Verwijderd op 02-10-2003 10:59 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Welke database gebruik je, en welke versie?

[ Voor 25% gewijzigd door gorgi_19 op 02-10-2003 10:57 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je zegt dat je alleen de foto's terug wilt krijgen waarvan de CATID zowel in 10 als 20 voorkomt. Je zegt vervolgens dat dat dus de foto's 1 en 2 zijn. Maar ik zie bij foto 2 nergens CATID 20 staan. Wat wil je PRECIES? Dit is erg belangrijk om een goed antwoord te kunnen geven... ;)

Overigens voel ik hier een sub-query aankomen, en die kunnen niet in oudere versie van MySQL. Bij deze dus alvast de vraag met welke database-achtergrond je werkt en, als dat MySQL is, met welke versie daarvan je werkt.

My personal website


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

OZ-Gump schreef op 02 oktober 2003 @ 10:57:
Overigens voel ik hier een sub-query aankomen, en die kunnen niet in oudere versie van MySQL. Bij deze dus alvast de vraag met welke database-achtergrond je werkt en, als dat MySQL is, met welke versie daarvan je werkt.
Subquery hoeft misschien niet eens..

een gedachtenspinsel...
SQL:
1
Select FotoID, Count(FotoID) as aantal FROM tabelnaam WHERE catid = 10 OR catid =20 Group By FotoID

Nu moet je alleen nog met een having clausule gaan controleren data aantal 2 is.. :P En die ben ik ff kwijt.

[ Voor 3% gewijzigd door gorgi_19 op 02-10-2003 10:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

SELECT fotoid FROM TABEL WHERE catid='10'
SELECT fotoid FROM TABEL WHERE catid='20'

En dan uit die 2 recordsets de gelijke fotoid's halen.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Nu moet je alleen nog met een having clausule gaan controleren data aantal 2 is.. En die ben ik ff kwijt.
HAVING aantal = 2? :p

Ik denk dat je me wel snapte: het was de bedoeling de TS wat meer info te ontlokken ten einde deze vraag bevredigend te kunnen beantwoorden....

offtopic:
He bah... heb ik een keer een stropdas om, begin ik te bazelen :+

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 02 October 2003 @ 10:57:
Je zegt dat je alleen de foto's terug wilt krijgen waarvan de CATID zowel in 10 als 20 voorkomt. Je zegt vervolgens dat dat dus de foto's 1 en 2 zijn. Maar ik zie bij foto 2 nergens CATID 20 staan. Wat wil je PRECIES? Dit is erg belangrijk om een goed antwoord te kunnen geven... ;)

Overigens voel ik hier een sub-query aankomen, en die kunnen niet in oudere versie van MySQL. Bij deze dus alvast de vraag met welke database-achtergrond je werkt en, als dat MySQL is, met welke versie daarvan je werkt.
Versie van MySQL is 4.0.X, met de id's 1 en 2 doelde ik op de id's (kolom 0) en niet de fotoid. De fotoid die dient te worden gereturned is dus idd fotoid 1
André schreef op 02 oktober 2003 @ 10:59:
SELECT fotoid FROM TABEL WHERE catid='10'
SELECT fotoid FROM TABEL WHERE catid='20'

En dan uit die 2 recordsets de gelijke fotoid's halen.
Dit kan idd, maar is verre van optimaal aangezien er duizenden fotos in de database staan.
gorgi_19 schreef op 02 oktober 2003 @ 10:59:
een gedachtenspinsel...
SQL:
1
2
Select FotoID, Count(FotoID) as aantal 
FROM tabelnaam WHERE catid = 10 OR catid =20 Group By FotoID

Nu moet je alleen nog met een having clausule gaan controleren data aantal 2 is.. :P En die ben ik ff kwijt.
Zal hier eens verder naar kijken

[ Voor 3% gewijzigd door Verwijderd op 02-10-2003 11:03 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

OZ-Gump schreef op 02 oktober 2003 @ 11:01:
[...]
HAVING aantal = 2? :p

Ik denk dat je me wel snapte: het was de bedoeling de TS wat meer info te ontlokken ten einde deze vraag bevredigend te kunnen beantwoorden....
Net geprobeerd, en het kan idd in 1 sql statement, zonder subquery.. :P
Ik krijg iig netjes alle fotoID's terug. :)

[ Voor 6% gewijzigd door gorgi_19 op 02-10-2003 11:08 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Hartelijk bedankt mensen :).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

en wat is jouw uiteindelijke oplossing geworden? :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

gorgi_19 schreef op 02 October 2003 @ 11:19:
[...]
en wat is jouw uiteindelijke oplossing geworden? :P
Ja! ja! weten weten weten! Info!
Is ook fijn als dit topic ooit nog eens door iemand gevonden wordt met de search, dan hebben ze ook een oplossing-achtig-iets ;)

My personal website

Pagina: 1