Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podzapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
di@blo
Problem wdaje sie byc banalny ale nigdy sie nie bawilem podzapytaniami i cos mi nie dziala

mam 2 bazy jedna ze sprzetem a druga ze slownikiem kategorii

w skrypcie mam zmienna z nazwa kategori i chce wyszukac wszystkie informacje o sprzecie z tabeli sprzet gdzie kategoria jest rowna ID z innej tabeli i tu podzapytanie bo musze znalesc to iD w bazie porownujac pole lin ze zmienna w skrypcie Troche to zawile ale moze to ktos zrozumie Umieszczam kod

  1. .
  2. $wykonaj = mysql_query(SELECT * FROM sprzet WHERE kategoria = (SELECT id FROM dic_kategorie WHERE link=$kat) ) OR die("erorro".mysql_error);
  3. .


nie wiem tez dokladnie gdzie powinny byc cudzyslowie a gdzie nie Jak by mi ktos wytlumaczyl jak to zrobic na kluczach obcych to tez by bylo fajnie smile.gif

z gory dziekuje za pomoc
abusiek
Podzapytanie nie jest tu konieczne, a wrecz nie potrzebne winksmiley.jpg

  1. SELECT * FROM sprzet s, dic_kategorie k WHERE s.kategoria = k.id AND k.link = $kat
di@blo
wielkie dzieki dziala smile.gif masz mzoe jakis link z opisem tego wszystkiego zebym nastepnym razem sam sobie radzil? tongue.gif

no i problem mam maly bo mam kod

  1. <?php
  2. $sql = sql_open(); $i=0;
  3.  
  4. $wykonaj = mysql_query("select * from sprzet s, dic_kategorie k where s.kategoria = k.id and k.link
     = '$kat'"
    );
  5. while($tab = mysql_fetch_array($wykonaj))
  6.  {
  7.  $dane[$i]['nazwa'] = $tab['nazwa'];
  8.  $dane[$i]['kategoria'] = $tab['kategoria'];
  9. $dane[$i]['podkategoria'] = $tab['podkategoria'];
  10. $dane[$i]['cena'] = $tab['cena'];
  11. $dane[$i]['kolor'] = $tab['kolor'];
  12. $dane[$i]['rozmiar'] = $tab['rozmiar'];
  13. $dane[$i]['firma'] = $tab['firma'];
  14. $dane[$i]['wypozyczalnia'] = $tab['wypozyczalnia'];
  15. $dane[$i]['opis'] = $tab['opis'];
  16. $dane[$i]['foto'] = $tab['foto'];
  17. $i++;
  18.  }
  19. sql_close($sql);
  20. ?>


tylko ze jak wyswietlam zmienna $dane[0]['nazwa'] to wysietla wartosc z tabeli kategorie a nie sprzet a reszte z tabeli sprzet Niby wystarczylo by zmenic nazwe w tabeli zeby sie nie dublowaly ale czy mozna to inaczej rozwiazac?
abusiek
Pierwsza sprawa to jesli pomoglo wypadaloby kliknac 'Pomógł' winksmiley.jpg

1. Co do tutriala to ten jest całkiem fajny: http://www.w3schools.com/sql/default.asp, a jak wpiszesz w google sql, tutorial to na pewno znajdziesz jakis, ktory by ci podpasowal
2. Jesli chodzi o drugie pytanie to zapytanie, ktore ci napisalem laczy tabele sprzet i disc_kategorie po wspolnym polu (id_kategorie), wybiera pasujace wiersze z obu tabel i w wyniku laczy je w jeden wiersz. Ogolnie dobra praktyka jest nie uzywanie '*' w zapytaniu select, tylko wypisanie listy kolumn, ktore naprawde sa nam potrzebne. Czyli twoje zapytanie mogloby wygladac tak:

  1. SELECT k.nazwa AS k_nazwa, s.nazwa AS s_nazwa FROM sprzet s, dic_kategorie k WHERE s.kategoria = k.id AND k.link = $kat


Jak widzisz w ten sposob rozwiazujesz tez problemy z konfliktami nazw: w obu tabelach jest kolumna 'nazwa' ale dzieki aliasom zarowno dla tabel jak i kolumn w wyniku nazwa z tabeli sprzet bedzie pod kluczem 's_nazwa', a ta z tabeli kategorie 'k_nazwa'
di@blo
1. nie jestem stalym bywalcem tego forum i nie za bardzo orientuje sie jak to tu wyglada Na wiekszosci forow button "pomogl" jest bo jest ale nikt nie uzywa Skoro tu panuja takie zasady to oczywiscie juz kliknalem "pomogl" bo mi bardzo pomogles
2. co do tutoriala oczywiscie ze znajdzie sie wiele ale chodzi mi o taki ktory bys mogl polecic a nie pierwszy z brzegu ktory znajde Zeby znalesc cos tresciwego trzeba czasem dlugo szukac
3. co do "*" to masz racje ale w tym przypadku wszystkie pola sa potrzebne
4. w kwesti upewnienia teraz zamiast $dane[$i]['nazwa']=$tab['nazwa']; aliasu i wygladac to bedzie tak $dane[$i]['nazwa']=$tab['s_nazwa'];?

teraz lektora tutoriala tongue.gif dzieki za pomoc
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.