[SQL] AND & OR

Pagina: 1
Acties:

  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06-2025
dit heb ik:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$zoekquery = mysql_query("
SELECT
    * 
FROM
    abonnement
WHERE
    abonnement_gsm_nr = '".strval($gsm_nr)."'   
AND
    abonnement_tijdelijk_nr = '".strval($tijdelijk_nr)."'
AND
    abonnement_debiteur_nr = '".intval($debiteur_nr)."'
AND
    abonnement_abonvorm_nr = '".intval($abonvorm_nr)."'
AND
    abonnement_datum_aanvraag = '".$datum_aanvraag."'
    ");

de bedoeling dat ik hier een qurie heb die kijkt naar opgegeven items
maar het moet OF gsmnummer OF tijdelijknunner zijn en niet beide
de rest blijft in beide gevallen actief
dit had ik eerst:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$zoekquery = mysql_query("
SELECT
    * 
FROM
    abonnement
WHERE
    (abonnement_gsm_nr = '".strval($gsm_nr)."'  
OR
    abonnement_tijdelijk_nr = '".strval($tijdelijk_nr)."')
AND
    abonnement_debiteur_nr = '".intval($debiteur_nr)."'
AND
    abonnement_abonvorm_nr = '".intval($abonvorm_nr)."'
AND
    abonnement_datum_aanvraag = '".$datum_aanvraag."'
    ");

maar dit werkte niet...
zonder resultaat :(
wat doe ik fout?
heb trouwens dit ook al geprobeerd zonder goede resultaat
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    * 
FROM
    abonnement
WHERE
    (abonnement_gsm_nr = '".strval($gsm_nr)."'  
AND
    abonnement_debiteur_nr = '".intval($debiteur_nr)."'
AND
    abonnement_abonvorm_nr = '".intval($abonvorm_nr)."'
AND
    abonnement_datum_aanvraag = '".$datum_aanvraag."')
OR
    (abonnement_tijdelijk_nr = '".strval($tijdelijk_nr)."'
AND
    abonnement_debiteur_nr = '".intval($debiteur_nr)."'
AND
    abonnement_abonvorm_nr = '".intval($abonvorm_nr)."'
AND
    abonnement_datum_aanvraag = '".$datum_aanvraag."')

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 19-01 13:20

Gé Brander

MS SQL Server

De laatste zonder de ( ) misschien?

En geef even aan of het MySQL, SQL Server of iets anders is, dat wil ook nog wel eens schelen.

[ Voor 58% gewijzigd door Gé Brander op 12-09-2006 16:08 ]

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06-2025
c70070540 schreef op dinsdag 12 september 2006 @ 16:07:
De laatste zonder de ( ) misschien?
nope ook al geprobeerd :(

het is MySQL - 3.23.58

[ Voor 6% gewijzigd door Tijgertje84 op 12-09-2006 16:10 ]

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Zoek je niet gewoon een XOR?

'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.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat ik niet snap is dat je geen resultaat krijgt. Je zou op z'n minst het resultaat verwachten dat je eerst had, maar dan inclusief de rijen waarvoor geldt dat tijdelijknr aan je eisen voldoet.

Overigens doe je met A OR B niet óf A, óf B (want als A voldoet, dan geeft dat true, terwijl als B ook voldoet je false wilt hebben). Dat is namelijk (A AND NOT B) OR (B AND NOT A) of simpelweg A <> B

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06-2025
lang geleden dat ik die heb gebruikt... :+
maaru dat is niet de oplossing

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

XOR was added in MySQL 4.0.2. Maar ongelijkheid doet natuurlijk precies hetzelfde :)

[ Voor 13% gewijzigd door .oisyn op 12-09-2006 16:24 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Tijgertje84
  • Registratie: Augustus 2005
  • Laatst online: 04-06-2025
.oisyn schreef op dinsdag 12 september 2006 @ 16:16:
Wat ik niet snap is dat je geen resultaat krijgt. Je zou op z'n minst het resultaat verwachten dat je eerst had, maar dan inclusief de rijen waarvoor geldt dat tijdelijknr aan je eisen voldoet.

Overigens doe je met A OR B niet óf A, óf B (want als A voldoet, dan geeft dat true, terwijl als B ook voldoet je false wilt hebben). Dat is namelijk (A AND NOT B) OR (B AND NOT A) of simpelweg A <> B
ik krijg wel een resultaat natuurlijk maar als ik dat moet gaan uitleggen wat uiteindelijk de bedoeling is dan wordt dit een lang verhaal...

dus om het kort te houden maakt het niet uit of ze true of false terug geven

het probleem ligt hem bij dat het tijdelijk nummer soms leeg is
en dus als deze leeg is en bij de volgende record ook dan ziet hij dat als gelijk en daar zit de fout
antwoord
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
    * 
FROM
    abonnement
WHERE
    (abonnement_gsm_nr = '".strval($gsm_nr)."'  
OR
    (abonnement_tijdelijk_nr = '".strval($tijdelijk_nr)."'
AND
    abonnement_tijdelijk_nr != ''
    ))
AND
    abonnement_debiteur_nr = '".intval($debiteur_nr)."'
AND
    abonnement_abonvorm_nr = '".intval($abonvorm_nr)."'
AND
    abonnement_datum_aanvraag = '".$datum_aanvraag."'


sorry voor de onduidelijke vraagstelling
kwam waarschijnlijk doordat ik zelf de fout niet begreep/doorhad maar nu wel :)

[ Voor 4% gewijzigd door Tijgertje84 op 12-09-2006 16:25 ]

Intel© Conroe E6600 | Asus P5Q PRO Turbo | Sapphire Vapor-X HD5770 1GB | G.E.I.L. 2 GB DDR2-667 Kit CL4 4-4-12 | WD Caviar SE16 2x250GB (S-ATA2) (Raid0) | Sunbeam Trio | Chaintec CFT-500A | Windows XP Pro SP3 | Samsung Syncmaster S23A350H


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

.oisyn schreef op dinsdag 12 september 2006 @ 16:20:
[...]

XOR was added in MySQL 4.0.2. Maar ongelijkheid doet natuurlijk precies hetzelfde :)
Ik bedoelde dan ook het fenomeen XOR en niet het keyword. Ik had ook geen idee of XOR als keyword daadwerkelijk in MySQL zat. ;)

'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.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Tijgertje84 schreef op dinsdag 12 september 2006 @ 16:23:
[...]

ik krijg wel een resultaat natuurlijk maar als ik dat moet gaan uitleggen wat uiteindelijk de bedoeling is dan wordt dit een lang verhaal...
Euh ja, hoe kunnen wij dan zien wat er fout is aan je query. Of moeten we maar raden? Maak eens een versimpeld voorbeeld met 2 kolommen (gsmnummer en tijdelijknummer), geef wat data, en zeg wat je precies terug wilt hebben van die data.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

-NMe- schreef op dinsdag 12 september 2006 @ 16:25:
[...]

Ik bedoelde dan ook het fenomeen XOR en niet het keyword. Ik had ook geen idee of XOR als keyword daadwerkelijk in MySQL zat. ;)
Laat ik het zo zeggen: het fenomeen XOR zat niet in MySQL voor versie 4.0.2 ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1