![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 9.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Buduję sobie stronę www i mam problem. Nigdy nie robiłem trudnych, czy długich zapytań do bazy.
Chcę zrobić, żę łączy mi się z jedną tabelą, pobiera z niej kilka danych, wśród nich ID, ten numer przesyła do kolejnej tabeli, gdzie do przypisanego ID jest dodana odpowiednia zawartość w polu numerID, i z niej wyciąga odpowiednie dane. Następnie z pierwszej tabelki i z drugiej pobiera odpowiedni numerID (np. 10 i 11) oraz sprawdza w trzeciej tabelce, jakie dane są przyporządkowane tym numerom, i dopiero wtedy wyświetla wszystkie dane. Budawa tabel: Kod Tabela 1 pr_tab1 -------------------------------------- |ID| NumerID| Tresc1| Tresc| ---------------------------------- |1 | 10 |Lol | brak | |2 | 14 |xxx | przyklad |3 | 10 |roftl | przyklad2 | |4 | 57 |zip | xxx | |5 | 35 |brak| i tak dalej | ------------------------------------- Tabela 2 ID | NumerID 1 | 15 2 | 14 3 |35 4 |57 5| 1 Tabela 3 NumerID | Nazwa 10 | Lol 35 | Adam 31 | Polska 38 | Pilka 4 | Temat Nie chcę gotowych skryptów, jedynie linki (najlepiej na polskie strony) oraz jakieś przykłady, a sam spróbuję to jakoś złożyć. Szukałem na forum podobnych problemów, ale znalazłem wyłącznie z 2 tabel i bez takich problemów" jak moje. Z góry dziękuje za pomoc/ Ten post edytował simo_n 11.10.2007, 18:38:12 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 9.09.2002 Skąd: Pszczyna Ostrzeżenie: (0%) ![]() ![]() |
jakie zależności są pomiędzy tymi tabelami. Opisz może co jest w jakiej tabeli bo wydaje mi się, że można to zrobić jednym zapytaniem łączącym
select * from tabela1 t1, tabela2 t2, tabela3 t3 where t1.id=t2.id and t2.numerID=t3.numerID and ..... tutaj podajesz dalsze ograniczenia nie wiem tylko dlaczego numerID powtarza się we wszystkich 3 tabelach można również użyć klauzuli left outer join jeżeli rekordy w tabeli 1 nie muszą mieć odpowiedników w tabelach 2 i 3 za mało napisałeś celem wyjaśnienia problemu pozdro Ten post edytował faster 11.10.2007, 20:33:18 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat select * from tabela1 t1, tabela2 t2, tabela3 t3 where t1.id=t2.id and t2.numerID=t3.numerID and ..... tutaj podajesz dalsze ograniczenia Jest pewna konwencja, że WHERE służy do wybierania wierszy, natomiast warunki łączenia podaje się gdzie indziej w klauzuli ON
Albo lepiej według mnie
To "przekazywanie" stosuje się właśnie w taki sposób, że tabele łączy się jedna obok drugiej, no ale w taki sposób, aby sobie odpowiadały (tabelka1.id_pracownika = tabelka2.id_pracownika). Automatycznie zajmuje się tym natual join i ja własnie go stosuje jednak np. jeżeli mamy "warunki inne", które mają np. w postgresie musiałem zrobić
zamiast zwyklego NATURAL JOINa, bo one akurat sobie nie odpowiadały. I teraz utworzyliśmy jedną dłuuuuga tabelkę, no ale nie chcemy wszystkiego wyświetlać prawda? Więc SELECTem wybieramy tylko te kolumny, które nas interesują. W Twoim wypadku będzie to:
Swoją drogą może lepiej trochę nazywaj te tabelki, bo są nazwa niczego nie mówi. Mój znajomy jest jeszcze lepeszy i zmienne, tabelki i wszystko inne nazywa w, pw, wf itd. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 23:22 |