Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Powtarzające się rekordy
Forum PHP.pl > Forum > Przedszkole
mathewZ
Witam. Zaczynam przygodę z MySQL'em. Mam pewną bazę.

Regał przechowuje półki.
Chcę wyciągnąć wszystkie półki(P1, P2, P3, P4...) z regału(R1) w postaci:
R1
P1
P2
P3
....
Niestety po odpytaniu bazy otrzymuje taki oto wynik:
R1
P1
R1
P2
R1
P3
....
Zapytanie do bazy które wykonuje:

  1. SELECT * FROM regal
  2. INNER JOIN polka
  3. ON(polka.regal_idregal = regal.idregal);


Proszę o pomoc, z góry dziękuję!





Zielonkawy18
  1. SELECT polka AS Regal1 FROM regal, polka WHERE polka.regal_idregal = regal.idregal AND regla.idregal=1
mathewZ
Nie działa nadal. Zwraca mi to samo:
http://imageshack.us/photo/my-images/641/screenkk.png/
Zielonkawy18
Jaką relację masz pomiędzy tabelami?
mathewZ
Relacja 1 do wielu.
"Jeden regał ma wiele półek" - tak to rozumiem
Zielonkawy18
Mimo to na moje by było tak jak wyżej. Władować półki do tabeli tymczasowej i winny być same regały. Tam mam w selekcie. Nie da nam nic innego niż zaznaczamy.
  1. SELECT polka AS Regal1 FROM regal, polka WHERE regal.idregal=polka.regal_idregal AND regla.idregal=1


Teraz zerknij i pokaż wynik.
Damonsson
SELECT polka AS Regal1 FROM regal, polka WHERE regal.idregal=polka.regal_idregal AND regla.idregal=1

Literówka, jakby co.
mathewZ
Nadal ten sam efekt co na screenie. Zapytanie lekko doposawanie do moich nazw w tabeli:

  1. SELECT nazwa_regal, nazwa_polka AS Regal1 FROM regal, polka WHERE regal.idregal=polka.regal_idregal AND regal.idregal=1;
Damonsson
Cytat
Mam pewną bazę
= Powróżę Ci, co może być źle.

Pokaż strukturę bazy i co chcesz osiągnąć, bo tak to można w nieskończoność 'pomagać'.
Zielonkawy18
nie rób już nazwa_regla. Sama nazwa_polka
mathewZ
Struktura
http://imageshack.us/photo/my-images/5/screenw.png/

Chcę wyciągnąć wszystkie półki(P1, P2, P3, P4...) z wszystkich regałów.
Przykład:
R1
P1
P2
P3

R2
P1
P2
P3
Zielonkawy18
Teraz to już wszystkie biggrin.gif Tutaj dałeś RMBD a jak to wygląda ze strony logicznej?? alter table było? Jeśli tak to jakie.
mathewZ
Nie za bardzo wiem o co Ci chodzi - rozwiń swoją myśl
Damonsson
  1. SELECT nazwa_polka, regal_idregal FROM polka ORDER BY regal_idregal


To Ci pomoże? Jeśli chcesz mieć już w select wyciągniętą nazwę regału i ustawioną w kolejności, musisz chyba zrobić JOIN'a. Ale, nie chcę mi się myśleć jak to zrobić, ktoś kto się na tym zna, zrobi Ci tego JOINa w sekundę.
Zielonkawy18
ktoś kto się na tym zna, zrobi Ci tego JOINa w sekundę.


A ja myślę, że to nie jest takie proste i jedyne wyjście to jakaś procedura etc.
mmmmmmm
  1. SELECT idregal, 0 idpolka, nazwa FROM `regal` r
  2. UNION ALL
  3. SELECT p.regal_idregal, idpolka, nazwa_polka FROM `regal` r LEFT JOIN `polka` p ON r.idregal=p.regal_idregal
  4. ORDER BY idregal, idpolka
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.