Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pomoc z zapytaniem do MySQLa
csharp
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


Cześć, męczę się i męczę i sam chyba już nie wymęczę...

posiadam dwie tabele:

categories:
id category id_parent (tabela ta tworzy mi drzewo kategorii)
------------------------
1 główna 0
2 główna_inna 0
3 podkategoria 1
4 podpodkategoria 1

products:
id id_cat title text (gdzie id_cat = id tabeli categories)
1 3 produkt opis
2 3 produkt opis
3 4 produkt opis

bez problemu sobie pobieram produkty dla konkretnego id z tabeli kategorii (mam zmienną id=3 (3 to numer kategorii) za pomocą której zasysam dane z produktów (produkty przypisane do kategorii, które mają id_cat=3).

problem się zaczyna gdy chcę wyświetlić główną kategorię np dostaję dane $id=1 i do niej nie ma żadnych produktów przypisanych ale są przypisane do podkategorii, które należą do id=1.

da się to teraz jakoś sklecić sql aby mi wypluł takie dane? czyli produkty dla numeru id, który otrzymujemy np. id=1 oraz jeśli istnieje przypisany numer id_parent to również produkty przypisane do niego.

coś takiego zacząłem robić ale niestety - danych jest za dużo powielonych... coś tam idę w dobrym kierunku ale potrzebuje pomocy (IMG:style_emoticons/default/smile.gif) z góry dzięki!

  1. SELECT p.id, p.id_cat, p.title, p.text, c.id, c.category, c.id_parent FROM products AS p, categories AS c
  2. WHERE p.id_cat=$id OR c.id_parent = $id

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
csharp
post
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


dzięki wielkie - taka pomoc mnie motywuje do nauki SQLa (IMG:style_emoticons/default/smile.gif) nie za bardzo rozumiem końcówki tego zapytania ale sobie doczytam - ważne, że to działa.

w tej chwili fajnie mi pokazuje produkty przy wyborze kategorii matki, wszystkie produkty, które są przypisane do dzieci. Jednak nie pokazuje mi już produktów, które są przypisane do dzieci i jeszcze ich dzieci...

patrząc na możliwość ustanawiania dowolnie "głębokich" kategorii, którą stworzyłem, zastanawiam się czy nie skopałem bazy na samym początku, czyli błędnie stworzone tabele - chyba, że uratuje mnie sql i można to jakoś rozwiązać... co o tym myślicie?

i czy ew. można było lepiej to zrobić?

mysql> show tables;
+--------------------+
| Tables_in_xxxx |
+--------------------+
| admins |
| categories |
| photos |
| products |
+--------------------+

mysql> select * from categories;
+----+----------------------------------------+-----------+
| id | category | id_parent |
+----+----------------------------------------+-----------+
| 1 | Ochrona r?k | 0 |
| 2 | Ochrona cia?a | 0 |
| 3 | Ochrona przed upadkiem z wysoko?ci | 0 |
| 4 | Ochrona g?owy | 0 |
| 5 | Ochrona s?uchu | 0 |
| 6 | Ochrona oczu i twarzy | 0 |
| 7 | Ochrona dr?g oddechowych | 0 |
| 8 | Ochrona n?g | 0 |
| 9 | Higiena i czysto?? | 0 |
| 10 | Wyposa?enie zak?ad?w / narz?dzia gertu | 0 |
| 11 | Ochrona PPO? | 0 |
| 12 | Pozosta?e artyku?y | 0 |
| 31 | podkategoria testowa | 1 |
+----+----------------------------------------+-----------+


mysql> select * from products;
+----+--------+-------------------+---------------------------------+
| id | id_cat | title | text |
+----+--------+-------------------+---------------------------------+
| 39 | 31 | PRODUKT TESTOWY | Opis produktu testowego |
| 40 | 31 | PRODUKT TESTOWY 2 | Opis do produktu testowego nr 2 |
+----+--------+-------------------+---------------------------------+

mysql> select * from photos;
+----+------------+----------------------------------+
| id | id_product | path |
+----+------------+----------------------------------+
| 40 | 39 | uploads/rekawice2_1342264999.jpg |
| 42 | 39 | uploads/rekawice1_1342265507.jpg |
+----+------------+----------------------------------+

Go to the top of the page
+Quote Post

Posty w temacie


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: 7.10.2025 - 08:13