Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

NiBurhe

Kaiser

Dabei seit: 07.04.2003

Beiträge: 1 292

 

1 Zum Seitenanfang

Mittwoch, 5. November 2003, 19:26

Mehrere Bedingungen in MySQL-Abfrage

Hallo,
ich wollte mal fragen, ob man mehrere Bedingungen in eine MySQL-Abfrage packen kann.
Also das soll sone Statistik werden, wo man 5 Bedingungen stellen kann, es kann aber sein, des die ein oder andere Variable mal leer ist (z.B. er soll die Datensätze anzeigen, wo $bedingung1 = 2 ist und $bedingung5 = 3). Oder das nur 1 Variable angegeben ist und die Abfrage sollte immer noch gehen.
Kann mir mal irgentwer so einen Code geben.
Danke
 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

2 Zum Seitenanfang

Mittwoch, 5. November 2003, 19:31

na meiner meinung nach müsste das so gehen:

$sql = "SELECT * from table WHERE $bedingung1='2' AND $bedingung5='3'";

$sql = "SELECT * from table WHERE $bedingung1='2' OR $bedingung5='3'";

ganz einfach oder. :P

jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jperl« (5. November 2003, 19:43)

 

abi2000mvag

Routinier

Dabei seit: 09.11.2002

Beiträge: 390

 

3 Zum Seitenanfang

Mittwoch, 21. Januar 2004, 17:02

@jperl:

na ob das so richtig funzt wie sich das niburhe vorstellt.

bei deinen beiden beingungen muss entweder beides war sein oder eben nur eines. nur dass eben die bedingungen verschiedenen §sql zugewiesen sind.

so würde das erste $sql nicht mit leeren variablen true werden
das zweite $sql, da könnte eins false sein und das WHERE wäre erfüllt obwohl das eben nicht der fall sein sollte:

ich denke da eher an sowas:

PHP-Quelltext

1
$sql "SELECT FROM table WHERE (bed1='2' OR bed1='') AND (bed5='3' OR bed5='')";


korrigiert mich wenn ich mich irre.

sr-dw
pxlcore
The Pixel Adventure Is Just Beginning
 

Alfons_G

Routinier

Dabei seit: 26.04.2003

Beiträge: 486

 

4 Zum Seitenanfang

Donnerstag, 22. Januar 2004, 10:52

Bei umfangreichen Datenbeständen ist es schneller, die Bedingungen vorher per PHP zu testen, ob sie einen Wert enthalten. Dann kann man sie weglassen, bzw durch den Wert "1" ersetzen, dann muss man die AND- und OR-Anweisungen nicht ändern. Umfangreiche OR-Verknüpfungen werden dagegen für jede Zeile der Tabelle wieder ausgeführt.
Bei wenigen Daten in der Tabelle ist es aber schneller, die Arbeit von der Datenbank machen zu lassen.

So kann es aussehen:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$sql="SELECT * FROM tabelle WHERE ";
if (!isset($var1)) {
  $sql.="1 ";
}
else {
  $sql.=" bedingung1 = '$var1' ";
}

if (!isset($var2)) {
  $sql.="1 ";
}
else {
  $sql.=" AND bedingung1 = '$var2' ";
}
//  und so weiter ...

$sql.=" ORDER BY xzy";
So werden leere Bedingungen durch "1" ersetzt. "1" ist immer wahr und bedeutet somit keinen Zeitverlust beim Ausführen der Abfrage. Wenn z.B. drei von fünf Bedingungen gefüllt sind, kann es so aussehen:

Quellcode

1
SELECT * FROM tabelle WHERE 1 AND bedingung2='abc' AND bedingung3='def' AND 1 AND bedingung5='ghi' ORDER BY xyz


Alfons
 

Ähnliche Themen