![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 4.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Prośba o pomoc.
Mam jedną tabelę, w której mam zapisane np grupy produktów i przypisane do nich produkty poprzez kolumnnę subid, która przybiera wartość id grupy. Grupy mają wartość subid=0. Czy możliwe jest w jednym zapytaniu wyciągnięcie tylko grup i od razu policzenie ile zawierają produktów ? Z góry dziękuję. Ten post edytował mabor 17.12.2004, 09:47:22 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo rozumiem. Najpierw piszesz, że produkty są powiązane z grupami poprzez subid, a potem podajesz że dla wszystkich grup to pole ma wartość 0 (czyli grupy nie mają żadnych produktów). Najlepiej wklej strukturę tabeli i podaj przykładowe rekordy.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 19.12.2004 Skąd: Milton Keynes Ostrzeżenie: (0%) ![]() ![]() |
SELECT count( subid ) , subid
FROM tabelka GROUP BY subid; z tego co zrozumialem to chodzilo ci o to Ten post edytował jedrzej 19.12.2004, 02:47:10 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 4.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Nie nie.
Przykładowa struktura id - wiadomo, subid - dla grup wartość 0 , dla produktów id grupy, name - wiadomo chodzi mi o to: select * from tabela where subid='0' - to da nam grupy i do tego od razu policzyć produkty Dzięki |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
jak dla mnie konstrukcja bazy jest 'kulawa'. tak czy owak dla tego co podales to rozwiazanie jedrzeja wydaje mi sie najlepsze, no moze leciutko zmodyfikwoane na :
jest to rozwiazaniem postawionego przez ciebie problemu. co prawda klopot sie pojawia jesli chcialbys wyciagac przy okazji nazwy grup, ale wtedy proponuje rozbic to na 2 tabele : GRUPY: id_grupy, nazwa PRODUKTY: id_produktu, id_grupy, nazwa i wtedy
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 19.12.2004 Skąd: Milton Keynes Ostrzeżenie: (0%) ![]() ![]() |
dokładnie brakowało jeszcze klauzuli WHERE w tym co napisalem, ale tez jestem zdania ze lepiej jest to rozbić na dwie tabelki- normalizacja się kłania (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)
A tak w ogóle to Wesołych Swiąt (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 4.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam dzięki wszystkim za pomoc.
W trakcie testów lokalnie zrobiłem to na jednej tabeli i uzyskałem wynik taki jaki chciałem, łącznie z nazwą grupy, nie wiem tylko czy poprawne jest dołączenie tej samej tabeli. Ale skoro działa i to zwraca odpowiedni wyniki na pewno możliwe ale czy poprawne. Przykład.
Pozdrawiam i Wesołych Świąt i Szczęś. Nowego Roku |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 7.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dopinanie tabeli samej do siebie jest jak widać możliwe, ale... jest to proszenie się o kłopoty. I nie tylko chodzi o ułatwienie sobie życia, choćby przy budowaniu zapytań SQL, lecz również o wzgledy stabilności. Co będzie jeśli przy wprowadzaniu danych zdarzy się taka historia że wiersz xxx wskaże na yyy, a yyy na xxx? Pętla bez końca? Załamanie bazy przez wprowadzenie niewłaściwych danych momentalnie powinno dyskwalifikować projekt.
Mając powyższe na uwadze, zmieniłbym układ pod kątem spełnienia dla bazy kryterium normalizacji, w tym konkretnym przypadku wydzielając grupy towarów do osobnej tabeli. Mam przeczucie graniczące z pewnością, że ten wysiłek opłaci się z nawiązką. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 09:05 |