[mysql / php] "dubbele query"

Pagina: 1
Acties:
  • 44 views sinds 30-01-2008

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
De query's hieronder gebruik ik dagelijks een lijst met voedingsproducten te genereren.

Ik heb een tabel waar ik dit van wil selecteren:

alle items waarvan de begindatum / einddatum tussen de datum van vandaag vallen:
PHP:
1
SELECT * FROM tabel WHERE '$datum' BETWEEN begindatum AND einddatum AND enkele_dag = '0'

Deze query haalt alle items dagelijks uit de database.

Ik heb ook een query wat producten uit de database haalt die maar een aantal dagen in de week (of 1 dag) voorkomen.

PHP:
1
SELECT * FROM tabel WHERE enkele_dag = '1' AND dag = '$vandaag' AND '$datum' BETWEEN begindatum AND einddatum


Kan ik deze query's ook in een query stoppen? Ik had al zoiets:
PHP:
1
SELECT * FROM tabel WHERE '$datum' BETWEEN begindatum AND einddatum AND enkele_dag = '0' OR WHERE enkele_dag = '1' AND dag = '$vandaag' AND '$datum' BETWEEN begindatum AND einddatum


Maar helaas werkt dit niet....

Kan zo'n query wel en wie kan me daar bij helpen want het kan vast!


// EDIT

Ach |:( als ik die WHERE na OR weghaal is het ok! _/-\o_

[ Voor 19% gewijzigd door ViNyL op 01-04-2005 15:46 ]


Verwijderd

Kwestie van haakjes rond de juiste AND en OR's zetten!

<?
SELECT *
FROM tabel
WHERE ('$datum' BETWEEN begindatum AND einddatum AND enkele_dag = '0')
OR (enkele_dag = '1' AND dag = '$vandaag' AND '$datum' BETWEEN begindatum AND einddatum)
?>

[ Voor 67% gewijzigd door Verwijderd op 01-04-2005 15:47 ]


  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

Ik weet het niet helemaal zeker maar volgens mij zou het moeten werken zonder de tweede WHERE

[edit: Dit werkt niet]

[ Voor 13% gewijzigd door teun-v op 01-04-2005 15:48 ]

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je doet nogal wat dingen dubbel in de query die je gemaakt had. Afgezien van die dubbele WHERE, die je zelf al opgemerkt had, is ook de vergelijking met BETWEEN dubbel. Verder kun je, wanneer je eenzelfde veld op meerdere waarden wil vergelijken, ook de IN-operator gebruiken. Zelf zou ik je query zo geschreven hebben:
SQL:
1
2
3
4
5
SELECT *
FROM tabel
WHERE ('$datum' BETWEEN begindatum AND einddatum)
  AND (enkele_dag IN (0,1))
  AND (dag = '$vandaag')


Hoe dan ook, omdat de denkfout die je maakte nogal van basisniveau is, doe ik een stukje sluitwerk op dit topic. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.