Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Złożone zapytanie mySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
mapaja
Witam mam problem
Mam stworzoną danych w MySQL składającą się z dwóch tabel: „osoby” , „zakupy”.
Tabela osoby zawiera następujące kolumny:
„id_osoby”, „imie”, „nazwisko”, „kod_pocztowy”, „miejscowosc”, „ulica” „numer_mieszkania”

Tabela zakupy zawiera następujące kolumy:
„id_zakupu”, „id_osoby”, „data_zakupu”, „kwota”, „opis_zakupu”

zadanie jest takie
do wyszukiwania jakie zakupy zrobiła dana osoba w zadanym czasie (4 pola do wprowadzania: imię,
nazwisko, data od, data do). Skrypt ma zwracać listę zakupów wykonaną przez daną osobę w zadanym czasie.
Mają zostać wyświetlone: imię, nazwisko, adres, data zakupu, kwota zakupu i opis zakupu.

Niemoge dojść jak ma Wyglądac take zapytanie Prosze o pomoc sad.gif
z góry dziękuje za zainteresowanie moim problemem
sniezny_wilk
Jeśli masz je złożyć to użyj LEFT JOIN, lub na google poszukaj czegoś.. po polsku jest kilka stron które to opisują całkiem całkiem.
mapaja
co jest nie tak questionmark.gif
  1. <?php
  2.  
  3. require_once('dbconfig.php');
  4.  
  5. $c_imie=$_REQUEST['c_imie'];
  6. $c_nazwisko=$_REQUEST['c_nazwisko'];
  7. $c_data_od=$_REQUEST['c_data_od'];
  8. $c_data_do=$_REQUEST['c_data_do'];
  9.  
  10. $id = mysql_connect($dbhost,$dbuser,$dbpass) OR die('Problem z polaczeniem: ' . mysql_error());
  11.  
  12. mysql_select_db($dbbaza);
  13.  
  14.  
  15. $sql = "SELECT $tOsoby.id_osoby, $tZakupy.id_osoby, imie, nazwisko, ulica, numer_mieszkania, miejscowosc, data_zakupu, kwota, opis_zakupu
  16. from $tOsoby join $tZakupy where $tOsoby.id_osoby=$tZakupy.id_osoby and imie='$c_imie' and nazwisko='$c_nazwisko' and data_zakupu > '$c_data_od' and data_zakupu < '$c_data_do' ";
  17.  
  18. $wynik=mysql_query($sql) OR die("Problem z wykonaniem zapytania<br /> $sql <br /> " . mysql_error());
  19. while($rekord=mysql_fetch_array($wynik)) {
  20. print("{$rekord['imie']} {$rekord['nazwisko']} ulica: {$rekord['ulica']} {$rekord['numer_mieszkania']} , {$rekord['miejscowosc']}
  21. ({$rekord['data_zakupu']}, {$rekord['kwota']}, {$rekord['opis_zakupu']}) <br />");
  22. }
  23.  
  24.  
  25. mysql_close($id);
  26. ?>
PiXel2.0
Takie zapytanie nie zwroci wyniku jesli wskazana osoba nie dokonala zadnych zakupow w podanym przedziale czasowym:

  1. SELECT * FROM osoby, zakupy WHERE osoby.id_osoby = zakupy.id_osoby AND imie = '{$imie}' AND nazwisko = '{$nazwisko}' AND data_zakupu >= {$data_od} AND data_zakupu <= {$data_do};


Takie zapytanie zwroci jedynie dane osoby a pozostale pola beda puste (NULL) jesli nie dokonala ona zadnych zakupow w podanym przedziale czasowym:

  1. SELECT * FROM osoby LEFT JOIN zakupy ON osoby.id_osoby = zakupy.id_osoby AND data_zakupu >= {$data_od} AND data_zakupu <= {$data_do} WHERE imie = '{$imie}' AND nazwisko = '{$nazwisko}';
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.