php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.03.2005, 09:43  
Gast
 
Beiträge: n/a
Standard Problem mit Between Abfrage

Ich hoffe ich bin hier richtig...

ich möchte mir mit folgender SQL Abfrage ein Ergebnis in einem bestimmten Zeitraum ausgeben lassen. Ich bekomme aber leider immer ein leeres Ergebnis:

PHP-Code:
<?php
$sql 
"SELECT COUNT(*) FROM [Tabelle] WHERE [Verkäufer] LIKE '$verkaeufer' AND [Produkt] LIKE '$Produkt' AND [Zeitraum] BETWEEN $Datum)"
?>
Der Wert von Datum wird per Select-Feld übergeben:

Code:
<select name="Datum">
          <option value="2005-01-01 AND 2005-12-31">2005</option>
          <option value="2004-01-01 AND 2004-12-31">2004</option>
</select>
Wie kann ich das lösen? Ist diese Syntax überhaupt richtig?

Das Feld Datum ist in der DB als Text formatiert, habe es mit dem Format Date auch schon erfolglos probiert.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.03.2005, 10:42  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Nimm ein date-Format und setze das Datum in Anführungszeichen:
Code:
 <option value="'2005-01-01' AND '2005-12-31'">2005</option>
In diesem Fall, wenn du immer ein ganzes Jahr abfrägst, könntest du das allerdings auch direkt tun:
PHP-Code:
<?php
$sql 
"SELECT COUNT(*) FROM [Tabelle] WHERE [Verkäufer] LIKE '$verkaeufer' AND [Produkt] LIKE '$Produkt' AND year([Zeitraum])  = $Datum)"
?>
Dazu setzst du dann einfach das Jahr ins value der Option. Und falls du keine "Wildcards" (%_) in den übrigen Vergleichswerte hast, verwende = statt LIKE.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 09.03.2005, 11:06  
Gast
 
Beiträge: n/a
Standard

Hallo lazydog!

Danke für die super schnelle Antwort!

Gesetzt dem Fall ich möchte nur immer ein Quartal abfragen, z.b. so:
Code:
 <option value="'2005-01-01' AND '2005-03-31'">2005</option>
 <option value="'2005-04-01' AND '2005-07-31'">2005</option> (etc..)
Muss ich meine Abfrage doch mit dem "Between" lösen, oder?
Hast dafür auch einen Lösungsvorschlag?
Danke schonmal!
  Mit Zitat antworten
Alt 09.03.2005, 11:50  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Es gibt auch die MySQL-Funktion quarter() (siehe http://dev.mysql.com/doc/mysql/de/da...functions.html), aber auch mit BETWEEN sollte es gehen. Und wegen dem Fehler, mach mal ein
Code:
echo "$sql
"
rein und zeige, was dabei raus kommt. Habs nicht getestet, daher ist es schon möglich, dass noch ein Fehler drin ist.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 09.03.2005, 13:22  
Gast
 
Beiträge: n/a
Standard

Ich habe einen Fehler gemacht, deine Syntax der SQL Abfrage ist richtig, sorry!

Ich komme einfach nicht weiter. Das Abfragen des ganzen Jahres funktioniert soweit. Allerdings mit between funzt es immer noch nicht!

Außerdem soll die Möglichkeit gegeben sein, dass nicht nur ein Verkäufer per Select-Feld ausgwählt werden kann, sondern auch das es die Option "alle" gibt, sprich das die verkauften Produkte aller Verläufer ausgegen werden. Genauso soll es diese Möglichkeit bei Produkt und Zeitraum geben. Ich weiss einfach nicht weiter. Sobald ich versuche das einzubauen bekomme ich immer ein leeres Ergebnis. *heul*
  Mit Zitat antworten
Alt 09.03.2005, 13:48  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wegen dem BETWEEN nochmals der Tipp von vorher: $sql ausgeben. Ich frage mich sowieso, ob es nicht besser wäre, dafür zwei Input-Felder zu nehmen. Dann kann jeder auch einen beliebigen Zeitraum abfragen. Und wegen allen Produkten, oder allen Verkäufern: setze in dem Fall einfach das Feld auf "%". Als Beispiel alle Produkte aller Verkäufer in einem bestimmten Zeitraum (so als Idee):
PHP-Code:
<?php
$verkaeufer 
$_POST['verkaeufer'] == 'alle' '%' $_POST['verkaeufer'];
$produkt $_POST['produkt'] == 'alle'  '%' $_POST['produkt'];
$sql "SELECT COUNT(*) 
               FROM tabelle
               WHERE [Verkäufer] LIKE '$verkaeufer' 
               AND [Produkt] LIKE '$produkt' 
               AND [Zeitraum] BETWEEN '" 
$_POST['datum_von'] ."' and '" $_POST['datum_bis'] ."'";
?>
Falls du bei deiner Option eine Mehrfachauswahl möglich ist, kann auch mit dem IN-Operator abgefragt werden, allerdings musst du dann "alle" anders behandeln:
Code:
...
WHERE verkaeufer IN ('" . implode("', '", $_POST['verkaeufer']  . "')"
...
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 09.03.2005, 15:27  
Gast
 
Beiträge: n/a
Standard

Hi,

dein letzter Post hat mir sehr geholfen! Vielen Dank!

Ich habe nun 2 Select Felder gemacht, mit Datum_von und Datum_bis (Input kann ich leider nicht machen, die wollen da keine Eingabemöglichkeit erlauben) und jetzt funktioniert auch die Select-Abfrage mit "between"! Ausserdem funzt jetzt auch die Abfrage mit "alle", da ich deiner Idee gefolgt bin und einfach den Wert "%" bei alle übergebe. (Die Lösung ist manchmal zu einfach...) Die SQL Abfrage ausgeben zu lassen ist auch eine gute Idee! Sieht also soweit alles ganz gut aus!

Tausend Dank erstmal!!!
  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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySql Frage: Problem mit einer etwas lomplexeren Abfrage tomtaz Datenbanken 5 24.06.2008 22:36
Abfrage Problem mastermix Datenbanken 2 06.08.2007 11:45
Between - Abfrage geht nicht - Bitte um kurze Hilfe bendigo Datenbanken 2 02.08.2006 11:06
[Erledigt] Problem mit Abfrage Datenbanken 0 20.10.2005 17:02
[MySQL] Problem mit einer verschachtelten Abfrage aktionkuba Datenbanken 7 06.04.2005 14:07
Problem mit abfrage. PHP Tipps 2005 13 30.03.2005 18:00
Problem mit abfrage und co PHP Tipps 2005 6 29.03.2005 16:38
Problem bei benutzername und passwort abfrage ? PHP Tipps 2005 4 15.03.2005 17:29
Abfrage Problem (vermute ich) PHP Tipps 2004-2 3 14.12.2004 22:21
[Erledigt] Abfrage LIMIT Problem Datenbanken 9 08.12.2004 19:05
Problem mit abfrage Datenbanken 8 05.12.2004 12:46
Problem mit einer SQL Abfrage picco PHP Tipps 2004-2 3 01.12.2004 22:32
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Problem mit SQL Abfrage Schiedsrichter Datenbanken 2 02.08.2004 07:52
Abfrage Problem (addition nicht mehr möglich?) Datenbanken 2 30.07.2004 15:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php between abfrage, php between, sql zeitraum, werte eines bestimmten zeitraums abfragen sql, sql between wildcard, sql zeitspanne between, between werte abfragen php, sql 2008 abfrage between, sql abfrage zeitraum, between und like in einer abfrage sql, sql abfrage bestimmten zeitraum, ganzes jahr sql between, sql datum zeitraum korrekt abfragen, sql nach datum in einem jahr ausgeben mit between, php abfrage where date like \', sql abfrage zeitraum between, mysql mehrere between, sql between $_post, sql datums abfrage beetween, php mysql mehrere between abfragen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:02 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.