php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.05.2005, 00:30  
Benutzer
 
Registriert seit: 15.09.2004
Beiträge: 57
pixelcut
Standard Problem mit select (AND, OR und Like gemixt)

Hallo,

folgende Abfrage bereitet mir momentan Kopfzerbrechen. Ich scheine da auf dem Holzweg zu sein.

Code:
Select * From users Where userstatus = '1' AND usergender = '2' OR dategender = '3' AND left(userzipcode,1) = '5'

Da sind jetzt Beispielwerte drin. Eigentlich sollen einfach nur Datensätze ausgeben werden, bei denen "userstatus" 1 ist und usergender entweder 2 ODER aber 3 ist aber auf jeden Fall userzipcode mit 5 beginnt.

Mit dieser Abfrage gibt er zwar die User aus die ich möchte, jedoch zusätzlich auch noch die auf die das OR zutrifft, warum auch immer, also User bei denen zwar usergender auf 3 oder 2 steht, jedoch der userzipcode z.B. mit 0 oder 1 oder sonstwas ausser 5 beginnt. Ich bin ein wenig verzweifelt und bitte um Hilfe.

Lasse ich das "OR usergender = '3'" weg, klappt die Anfrage. Ich brauche jedoch diese Abfrage (Mann, Frau ODER wird BEIDES (Mann und Frau) gesucht)

Danke im Voraus!
pixelcut ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.05.2005, 00:31  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du kannst (und musst in deinem fall) boole'sche ausdrücke klammern. geht genauso wie mit mathe. reicht dir das als hilfe?
axo ist offline   Mit Zitat antworten
Alt 11.05.2005, 01:40  
Gast
 
Beiträge: n/a
Standard

1) Schulwissen: "Punkt- geht vor Strichrechnung"
2) Doku: http://dev.mysql.com/doc/mysql/en/op...recedence.html
3) Übertragung: AND geht vor OR (OR bindet schwächer als AND)
  Mit Zitat antworten
Alt 11.05.2005, 10:14  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Du kannst die beiden OR-Ausdrücke durch die IN-Funktion ersetzen, dann geht es auch:
Code:
SELECT attribut1, attribut2, ... 
FROM users 
WHERE  userstatus = 1
AND usergender IN(2, 3)
AND LEFT(userzipcode,1) = '5'
Da ich davon ausgehe, dass userstatus und usergender nummerische Werte sind, lass ich die Anführungszeichen weg.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select and, select and or, and select, select or and, php and or, select from where like, and or select, like and or, select where or and, php select and or, and or like, select from where and or, select mit and, select and or like, select \and\, select and or mysql, php select or, select where like and, php select and, php select or and

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.