Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> podzapytanie
di@blo
post 24.03.2008, 18:48:49
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 9.03.2005

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


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

Ten post edytował di@blo 24.03.2008, 18:52:04
Go to the top of the page
+Quote Post
abusiek
post 24.03.2008, 19:01:49
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 5
Dołączył: 23.10.2006
Skąd: Gda?sk

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


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
Go to the top of the page
+Quote Post
di@blo
post 24.03.2008, 19:43:46
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 9.03.2005

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


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?
Go to the top of the page
+Quote Post
abusiek
post 24.03.2008, 20:51:20
Post #4





Grupa: Zarejestrowani
Postów: 89
Pomógł: 5
Dołączył: 23.10.2006
Skąd: Gda?sk

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


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'
Go to the top of the page
+Quote Post
di@blo
post 24.03.2008, 21:46:17
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 0
Dołączył: 9.03.2005

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.05.2024 - 02:30