[SQL] Subquery werkt niet (Mysql 5)

Pagina: 1
Acties:

  • Harribo
  • Registratie: Augustus 2002
  • Laatst online: 09:38
Hallo, Ik ben bezig met een hele lang subquery die alleen op het meest geneste deel niet lijkt te werken. Ik heb zitten google'en en hier rondgekeken, op de mysql site, zit er nu een 2 uur mee te stoeien, maar geen resultaat.
In dit deel van de query zitten 2 SELECT statements die afzonderlijk elk WEL werken, maar niet bij elkaar genest.

De Query:

SELECT actrooster.activiteitid FROM actrooster WHERE actrooster.tijdstip=ANY (SELECT klastijdstippen.tijdstip FROM klastijdstippen WHERE klastijdstippen.klas='3a');

De tabelstructuren:

Actrooster
---------------
tijdstip VARCHAR(20
volgorde INT
activiteitid INT

Klastijdstippen
-----------------
klas VARCHAR(10)
tijdstip VARCHAR(20)


Ik heb al van alles geprobeerd, gewoon zonder de ANY, of met een IN, in een DISTINCT vorm...tot nu nog niets...:(...ik eet mijn schoen op..iemand een idee?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 15-02 21:52

TeeDee

CQB 241

Definieer 'werkt niet'. Krijg je foutmeldingen, onjuiste informatie etc.

SQL:
1
2
3
4
5
6
7
SELECT actrooster.activiteitid FROM actrooster WHERE actrooster.tijdstip 
IN 
  (
     SELECT klastijdstippen.tijdstip 
     FROM klastijdstippen 
     WHERE klastijdstippen.klas='3a'
)


Let op de IN clausule. Weet niet of de rest van je statement goed is, maar als ik niet weet of je foutmeldingen of onjuiste data krijgt dan kan ik er verder niet veel van zeggen.

[ Voor 94% gewijzigd door TeeDee op 07-07-2006 16:37 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
= ANY :?

Ik denk dat dit een syntax fout oplevert. Je combineert een vergelijkings-operator en een verzamelings-operator en dat kan niet.

http://fivedots.coe.psu.ac.th/~ant/SQLReference/select.html

[ Voor 53% gewijzigd door Feyd-Rautha op 07-07-2006 16:45 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:46

Creepy

Tactical Espionage Splatterer

= ANY is een alias voor IN. Zie ook http://dev.mysql.com/doc/...y-in-some-subqueries.html.

En verder. Zie TeeDee: "Definieer 'werkt niet'. Krijg je foutmeldingen, onjuiste informatie etc.".
Zou je aub Programming Beleid - De Quickstart eens door willen lezen en vervolgens je topicstart wat aan willen vullen? :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Harribo
  • Registratie: Augustus 2002
  • Laatst online: 09:38
Mijn excuses...de definitie van 'werkt niet' : ik krijg niets terug terwijl dat wel het geval zou moeten.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dat is toch geen uitleg van werkt niet... Is niets terug krijgen een error krijgen of is het een lege resultset?

Met de aanname dat je PHP gebruikt, als je een andere taal gebruikt kan dit ook, maar moet je even zelf de goede functienaam opzoeken: Echo eens mysql_error() als mysql_query() false retourneert.

{signature}


Verwijderd

Wat staat er precies in het veld 'Tijdstip' (VARCHAR(20)). Zijn die regels specifiek alleen voor klas 3A?
Want je selecteert nu alle tijdstippen van Klas 3A. Echter selecteer je vervolgens alle activiteiten in het rooster die op die tijdstippen beginnen, dus ook activiteiten die niet voor Klas 3A gelden...
Lijkt me namelijk dat je alle, maar ook alleen, activiteiten van klas 3A wil hebben.

Meer krijg ik niet op dit moment uit mijn glazen bol... ;-)

  • Harribo
  • Registratie: Augustus 2002
  • Laatst online: 09:38
Als ik niets terug krijg bedoel ik daarmee dat het een lege resultset betreft. Er worden verder geen errors gemeld. Ik gebruik inderdaad PHP, maar test deze query via Mysql Control Center, de laatste versie.

Het zit zo verder, dat een klas (hier 3a) verschillende tijdstippen heeft waarop het aan die activiteiten mag deelnemen. De tijdstippen zijn strings : 'domo','domi' etc (voor donderdagmorgen/middag etc).
De tijdstippen zijn express zo gekozen, tijden en datums werken niet voor dit pakket omdat het steeds weer hergebruikt gaat worden (maar dat terzijde).
Dit is het meest geneste SELECT statement. Daarna kijk ik welke activiteiten(nummers) vallen op die tijdstippen (outer SELECT statement).
Ik krijg niet alle activiteiten, die krijg ik als ik de conditie klas='3a' weghaal WEL. Nu krijg ik niets dan dat is raar. vind ik :)

[ Voor 85% gewijzigd door Harribo op 08-07-2006 13:27 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 11:02

momania

iPhone 30! Bam!

Harribo schreef op zaterdag 08 juli 2006 @ 13:14:
Als ik niets terug krijg bedoel ik daarmee dat het een lege resultset betreft. Er worden verder geen errors gemeld.
dan is OF je data niet goed OF je query klopt niet (tijdstip als varchar is sowieso vaag 8)7 ) OF je krijgt wel een error, alleen omdat je geen 'mysql_error()' gebruikt zie je die dus niet :)

Neem je whisky mee, is het te weinig... *zucht*


  • Harribo
  • Registratie: Augustus 2002
  • Laatst online: 09:38
Mijn data klopt, kan het met de hand nabootsen en de query heb ik ook uitgevoerd in de shell van mysql. Kortom, als je het mij vraagt klopt de query niet.
Pagina: 1