Problemen met COUNT in SQL query (en nog wat)

Pagina: 1
Acties:

  • Blauw
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:47

Blauw

De Schreeuw

Topicstarter
Beste mensen,

Ik heb het volgende probleem:
|:(

Ik moet een overzicht van de boekingen waarvoor de
reisdocumenten nog niet zijn verstuurd geven, en waarvan de
startdatum tussen 1 week en 2 weken na de huidige datum ligt.

Ik wil het volgende op m'n beeld hebben:
boekingnummer, startdatum, huidige datum, agentnummer,
agentnaam

Dit is wat ik heb:
code:
1
2
3
4
5
SELECT Boeking.boekingnr, Boeking.vertrekdatum, Date() AS Huidige_Datum, Boeking.agentnr, Agent.voorletters, Agent.achternaam, Boeking.reisdoc_verstuurd
FROM (Agent INNER JOIN Boeking ON Agent.agentnr = Boeking.agentnr) INNER JOIN Boeking_Verblijf ON Boeking.boekingnr = Boeking_Verblijf.boekingnr
WHERE Boeking.reisdoc_verstuurd='niet' 
AND Day(boeking.vertrekdatum)>Day(Date())+6 
AND Day(boeking.vertrekdatum)<Day(Date())+15;

2e vraag:

Ik moet een overzicht geven van de reizen waarvan de reisaanvangsdatum in de maand na de huidige maand ligt, en waarvan het aantal boekingen lager is dan 4.
Toon:
reisnummer, landcode, landnaam

Dit is wat ik heb:
code:
1
2
3
4
5
6
7
SELECT Reis.reisnr, Reis.landcode, Reis.landnaam, Boeking.vertrekdatum, Boeking.boekdatum
FROM Reis INNER JOIN Boeking ON Reis.reisnr = Boeking.reisnr
WHERE MONTH(Boeking.vertrekdatum) = MONTH(Date()) +1
AND
(select COUNT(reis.reisnr)
FROM REIS
WHERE reis.reisnr < '4');

En tenslotte:

Ik moet een overzicht geven van agenten die tot vandaag aan minder dan drie reizen zijn verbonden geweest.
Toon:
agentnummer, agentnaam, straatnaam, huisnr, postcode, plaatsnaam, land

Dit is wat ik heb:
code:
1
2
3
4
5
6
SELECT Agent.agentnr, Agent.achternaam, Agent.straatnaam, Agent.huisnr, Agent.postcode, Agent.plaatsnaam, Agent.landnaam
FROM Agent
WHERE (SELECT COUNT(agentnr)
  FROM Agent_Reis
  WHERE  agentnr < 100
  GROUP BY agentnr <>False);

Al deze queries werken niet naar behoren.
Tips en uitwerkingen zijn zeer welkom!


Houdt er svp rekening mee dat ik niet een SQL guru ben...
:)

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

wat werkt er precies niet? En wat lukt er al wel?

[edit] en misschien ook handig om het db-ontwerp erbij te doen..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Zowieso gaan de meeste queries de mist in op een dag als vandaag..

Day(25 Maart) = 25
25 + 6 = 31
25 + 15 = 40

40 maart bestaat niet


Zelfde geldt voor die Month() funktie.. Maand 13 gaat niet bestaan in december.

SIZE does matter.
"You're go at throttle up!"


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Ad 1: (getest)
code:
1
2
3
4
5
6
7
SELECT Boeking.boekingnr, Boeking.vertrekdatum, Date() AS Huidige_Datum, 
Boeking.agentnr, Agent.voorletters, Agent.achternaam, Boeking.reisdoc_verstuurd
FROM (Agent INNER JOIN Boeking ON Agent.agentnr = Boeking.agentnr) 
INNER JOIN Boeking_Verblijf ON Boeking.boekingnr = Boeking_Verblijf.boekingnr
WHERE Boeking.reisdoc_verstuurd='niet' 
AND DateDiff("ww",Now(),[vertrekdatum])>=1
AND DateDiff("ww",Now(),[vertrekdatum])<=2

Ad 2: (niet getest)
code:
1
2
3
4
5
6
7
8
9
SELECT Reis.reisnr, Reis.landcode, Reis.landnaam, 
Boeking.vertrekdatum, Boeking.boekdatum
FROM Reis INNER JOIN Boeking ON Reis.reisnr = Boeking.reisnr
WHERE DateDiff("m",Now(),[vertrekdatum]) = 1
AND (
    SELECT COUNT(reis.reisnr) 
    FROM REIS 
    WHERE reis.reisnr < '4'
    );

SIZE does matter.
"You're go at throttle up!"


  • Blauw
  • Registratie: Januari 2001
  • Laatst online: 08-09 21:47

Blauw

De Schreeuw

Topicstarter
code:
1
2
3
4
5
6
SELECT Agent.agentnr, Agent.achternaam, Agent.straatnaam, Agent.huisnr, Agent.postcode, Agent.plaatsnaam, Agent.landnaam
FROM Agent
WHERE (SELECT COUNT(agentnr)
  FROM Agent_Reis
  WHERE  agentnr < 100
  GROUP BY agentnr <>False);

Alleen deze nog aub. Die eerste werkt nu al wel helemaal goed. :)

  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Volgens mij werkt dit beter (niet getest):
code:
1
2
3
4
5
6
SELECT Agent.agentnr, Agent.achternaam, Agent.straatnaam, Agent.huisnr, Agent.postcode, Agent.plaatsnaam, Agent.landnaam
FROM Agent
WHERE (SELECT COUNT(agentnr)
  FROM Agent_Reis
  WHERE  agentnr < 100 AND agentnr <> False
  GROUP BY agentnr);

Volgens mij kun je namelijk geen selectiecriteria opgeven in een GROUP BY, dus heb ik hem even naar de WHERE verhuisd.

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.

Pagina: 1