Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Złożone zapytanie mySQL
mapaja
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.05.2008

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
z góry dziękuje za zainteresowanie moim problemem
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #2





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mapaja
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.05.2008

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
PiXel2.0
post
Post #4





Grupa: Zarejestrowani
Postów: 110
Pomógł: 13
Dołączył: 16.03.2007
Skąd: Łódź

Ostrzeżenie: (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}';
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:52