Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc PHP + SQL zapytanie dziwne zachowanie
Forum PHP.pl > Forum > Przedszkole
adrian512
Witam Serdecznie wszystkich.

Czy moze mi ktoś pomoć dlaczego mam następujący problem ?:

Mam zapytanie takie :
  1. query="(SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy
  2. FROM DokMag JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag
  3. JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru
  4. WHERE (DokMag.Data BETWEEN '$dataod' AND '$datado') )"


zmienne dataod i datado przyjmowane są przez input jako data.

Problem jest taki ze gdy wybiorę sobie zakres dat np cały październik (2014-10-01 do 2014-10-31) to wszystko ładnie działa (z pozostałymi wcześniejszymi mieisacami jest tak samo)
natomiast gdy wybiorę cały listopad lub np grudzień to juz sql nic nie zwraca..

gdy ręcznie wpisze date np( 2014-11-01 dp 2014-11-30) to zwraca

Prosze o pomoc.
Kshyhoo
Wyechuj sobie to zapytanie a zobaczysz, gdzie problem.
Przenoszę do Przedszkola. Popraw też temat, bo tu każdy przychodzi po pomoc...
adrian512
wyechuj ? podpowiesz jak ?
Turson
echo $query
adrian512
  1. (SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy FROM DokMag JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru WHERE (DokMag.DATA BETWEEN '2014-11-01' AND '2014-12-06')


takie cos otrzymalem, ktoś pomoże ?
Turson
Albo źle skopiowałeś albo brakuje domknięcia nawiasu na końcu.
btw. sprawdź mysql_errors
ShaggyAG
dlaczego to
  1. DokMag.data
zmienie sie w to
  1. DokMag.DATA
Turson
Data jest wyrazem zastrzeżonym przez SQL. Opakuj to w `data`
adrian512
teraz mam cos takiego :
  1. (SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy FROM DokMag JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru WHERE ( 'DokMag.Data' BETWEEN '2014-11-01' AND '2014-12-06') )



$wynik1 = mysql_query($query1) or die(mysql_error());

cos takiego jak wyzej nie wyzuca mi bledow
Turson
`DokMag`.`Data` a nie 'DokMag.Data'

Wklej to zapytanie w PHPMyAdmin i zobacz efekt
adrian512
  1. "(SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy
  2. FROM DokMag JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag
  3. JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru
  4. WHERE ( 'DokMag'.'Data' BETWEEN '$dataod' AND '$datado') )"


jak tak wpisze to pojawia sie błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.'Data' BETWEEN '2014-11-01' AND '2014-11-29')

ShaggyAG
zobacz tak
  1. DokMag.[DATA]
Turson
masz znowu 'DokMag'.'Data' a przeczytaj co napisalem w poscie #10
adrian512
  1. (SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy FROM DokMag JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru WHERE ( `DokMag`.`Data` BETWEEN '2014-11-01' AND '2014-12-06') )


Przepraszam faktycznie zle zauważylem , ale dalej nie działa.. nie wyświetlają się żadne rekordy
Turson
a w phpmyadmin? Jak nic nie ma to warunek jest zly
adrian512
a powiedz mi czy wszystko z datą jest dobrze wpisane ?
bo dziwne jest to ze do listopada wszystko dziala a po niestety nie.
chyba ze wpisze recznie datę (nie poprzez zmienna) to chodzi..
ShaggyAG
http://www.w3schools.com/sql/sql_between.asp

ostatni przykład...

Dlaczego data jest pomiedzy #?
Nie mogę wygooglac nic na ten temat.
Turson
Cytat(adrian512 @ 6.12.2014, 22:56:28 ) *
a powiedz mi czy wszystko z datą jest dobrze wpisane ?
bo dziwne jest to ze do listopada wszystko dziala a po niestety nie.
chyba ze wpisze recznie datę (nie poprzez zmienna) to chodzi..

Jaki masz typ kolumny z datą?
adrian512
w phpmyadmin kolumna jest typu Date

Ma ktoś jeszcze jakiś pomysl ?
Turson
Miałeś wkleic to zapytanie w phpmyadmin i sprawdzic rezultat
adrian512
MySQL zwrócił pusty wynik (zero wierszy). ( Wykonanie zapytania trwało 0.6260 sekund(y) )
SELECT DokMag.Id, HistoriaMag.ce_zn, HistoriaMag.Ilosc, Towary.IdGrupy
FROM DokMag
JOIN HistoriaMag ON DokMag.Id = HistoriaMag.IdDokMag
JOIN Towary ON Towary.Id = HistoriaMag.IdTowaru
WHERE (
`DokMag`.`Data`
BETWEEN '2014-11-01'
AND '2014-12-06'
)
LIMIT 0 , 30
Turson
Czyli po prostu nie ma rekordów spełniających taki warunek. Weź pod uwagę JOIN - jak nie ma rekordu na łączeniu to od razu wyniku nie ma.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.