[MySQL] Select query

Pagina: 1
Acties:

  • -MvZ-
  • Registratie: Februari 2000
  • Laatst online: 05-09-2025
stel, ik heb een tabel (tabelx) met twee kollommen (kolom1,kolom2) met daarin de volgende informatie:
code:
1
2
3
4
5
6
7
8
9
kolom1      kolom2
   a          3
   b          3
   b          4
   c          4
   e          5
   c          5
   f          6
   c          6

Nu wil ik die letters uit kolom1 selecteren die bij 1 of meerdere nummers uit kolom2 horen. Een paar voorbeeldjes:
kolom2: 5 kolom1 'e','c'
kolom2: 4 kolom1 'b','c'
kolom2: 3 EN 4 kolom1 'b'
kolom2: 3 OF 4 kolom1 'a','b','c'
kolom2: 4 EN 5 EN 6 kolom1 'c'
kolom2: 3 EN 5 kolom1 (niks)
Enzovoorts...

Hoe kan ik dat voor elkaar krijgen in mysql?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Hoe kan ik dat voor elkaar krijgen in mysql?
Dat is toch niet zo moeilijk?
kolom2: 5 kolom1 'e','c' -> where kolom2 = 5 AND kolom1 IN('e','c')
kolom2: 4 kolom1 'b','c' -> eitje
kolom2: 3 EN 4 kolom1 'b' -> deze is erg lastig, zoniet ondoenlijk
kolom2: 3 OF 4 kolom1 'a','b','c' -> kolom2 IN (3, 4) AND kolom1 IN ...
kolom2: 4 EN 5 EN 6 kolom1 'c' zie 2 regels hierboven
kolom2: 3 EN 5 kolom1 (niks) -> niks, geen restricties of null :?
Sowieso zijn het soms wat vreemde relaties die je wilt leggen.

Want elke rij representeert toch een unieke entry? Waarom ga je dan relaties _tussen_ rijen leggen (kolom2 die 4, 5 en 6 moet zijn :? )

  • -MvZ-
  • Registratie: Februari 2000
  • Laatst online: 05-09-2025
Ik zal proberen het nog ff beter uit te leggen... Laat ik de twee tabellen net ff anders noemen :)
nieuw voorbeeld dus...
Ik heb een database voor allemaal foto's (zodat ik foto's kan terugzoeken). In die database heb ik twee tabellen, eentje genaamd fotos, en eentje genaamd opfoto. In de tabel opfoto staan verwijzingen naar mensen die op de foto staan (er staat een identificatie nummer van een foto in, en een identificatie nr van een persoon).
Ik wil dus kunnen zoeken naar foto's waarop bijvoorbeeld twee bepaalde mensen staan (of 3 of 4 of 1... etc). Dus bijvoorbeeld alle foto's waar henk en piet gezamelijk opstaan.
Terugkomend op die tabel in de eerste post vanmij: stel henk heeft als id 3 en piet heeft als id 5. Ik wil dan een query maken die mij die foto('s) geeft waarop zowel piet als henk staan. In dit geval wil ik dus dat ie de letter 'c' aan mij teruggeeft.

Dus die tabel opfoto is gewoon een langelijst van een nummer van een persoon en een nummer van een foto, mensen die op foto's staan dus.

Hoe ziet zo'n query eruit in mysql?

[ Voor 13% gewijzigd door -MvZ- op 07-12-2002 01:47 ]


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Erg standaard SQL queries. Lees er eens een manual over SQL op na.

kolom2: 3 EN 4 kolom1 'b' -> deze is erg lastig, zoniet ondoenlijk
: select distinct a.kolom1 from tabelletje a,tabelletje b where a.kolom1=b.kolom1 and a.kolom2<>b.kolom2

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • -MvZ-
  • Registratie: Februari 2000
  • Laatst online: 05-09-2025
Ik heb nog steeds het gevoel dat ik niet helemaal begrepen word... kan aan mij liggen ...
Maar ik wil dus een query wat lijkt op deze:
SELECT foto_id FROM opfoto WHERE pers_id=3 AND foto_id IN (SELECT foto_id FROM opfoto WHERE pers_id=4)
Maar dit werkt dus niet in mysql, kan dit op een andere manier worden opgelost?
Zelf dacht ik inmiddels dat ik misschien net zo goed het gewoon af kan handelen in PHP. Dus gewoon twee query's maken:
SELECT foto_id FROM opfoto WHERE pers_id=3
SELECT foto_id FROM opfoto WHERE pers_id=4
En dan uit de resultaten van deze twee query's opzoeken of er een gemeenschappelijke foto_id bij zit.

Deze query's dus uitgevoerd op onderstaande tabel (opfoto):
code:
1
2
3
4
5
6
7
8
9
foto_id      pers_id
   a          3
   b          3
   b          4
   c          4
   e          5
   c          5
   f          6
   c          6

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

-MvZ- schreef op 07 december 2002 @ 13:19:
Ik heb nog steeds het gevoel dat ik niet helemaal begrepen word... kan aan mij liggen ...
Maar ik wil dus een query wat lijkt op deze:
SELECT foto_id FROM opfoto WHERE pers_id=3 AND foto_id IN (SELECT foto_id FROM opfoto WHERE pers_id=4)

Nou, voer de query van dusty es uit dan :?
En zoek anders even op mysql.com naar 'subquery' (of subselect) en kijk hoe zij ze omschrijven naar een gewone select.

  • -MvZ-
  • Registratie: Februari 2000
  • Laatst online: 05-09-2025
Hulde... :)
Dat werkt gewoon.... Wat is dat voor een raar truukje dan?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

-MvZ- schreef op 07 december 2002 @ 14:20:
Hulde... :)
Dat werkt gewoon.... Wat is dat voor een raar truukje dan?

Is geen raar truckje, dat heet aliasing en wordt door vrijwel elke database ondersteund :)

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 24-08 20:51
Sinds wanneer kun je subqueries in MySQL gebruiken?

zeroxcool.net - curity.eu


  • whoami
  • Registratie: December 2000
  • Nu online
ZeRoXcOoL schreef op 07 December 2002 @ 15:14:
Sinds wanneer kun je subqueries in MySQL gebruiken?


Dat kun je nog altijd niet.
Je moet het nog altijd dmv een OUTER join oplossen.

https://fgheysels.github.io/


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 24-08 20:51
Ah zo, dacht al :D.

zeroxcool.net - curity.eu


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
Je kunt pas subselects gebruiken vanaf MySQL versie 4.1, tenminste dat zijn de plannen van de makers. Nou maar hopen dat dat ook gaat gebeuren.
Pagina: 1