pobranie wynikow z kilku tabel - problem z wynikami
sd - 11-11-2005 11:38
pobranie wynikow z kilku tabel - problem z wynikami
witam
wczoraj sie ucieszylem gdy ulozylem dosyc dlugie jak dla mnie zapytanie - wpisalem wyniki w odpowiednie pola formularza i bylo dobrze ale dzisiaj chcialem wykorzystac to samo zapytanie przy czyms innym, przyjrzalem mu sie blizej i cos tu jest nie tak
mam takie tabele
BRANZA: branza_id, branza_nazwa PODBRANZA: podbranza_id, podbranza_nazwa FIRMA: firma_id, firma_nazwa FIRMA_BRANZA: firma_id, branza_id FIRMA_PODBRANZA:firma_id, podbranza_id
chyba widac o co chodzi :) pierwsze pytanie: czy slusznie to opracowalem?
chce pobrac wszystkie branza_id, podbranza_id przypisane do firma_id, dodatkowo chce pobrac branza_nazwa, podbranza_nazwa
czy da sie to w jednym zapytaniu zrobic? ja takiego potwora stworzylem ale wynik nie jest zadowalajacy. prosze o pomoc z gory dziekuje pozdrawiam
SELECT tfb.branza_id, tb.branza_pl, tfp.podbranza_id, tp.podbranza_pl FROM targi_firma_branza AS tfb LEFT JOIN targi_firma_podbranza AS tfp ON(tfp.firma_id = ".$dane['firma_id'].") LEFT JOIN targi_branza AS tb ON (tb.branza_id = tfb.branza_id) LEFT JOIN targi_podbranza AS tp ON (tp.podbranza_id = tfp.podbranza_id) WHERE tfb.firma_id = ".$dane['firma_id']
Sebastian - 11-11-2005 11:38
> BRANZA: branza_id, branza_nazwa > PODBRANZA: podbranza_id, podbranza_nazwa > FIRMA: firma_id, firma_nazwa > FIRMA_BRANZA: firma_id, branza_id > FIRMA_PODBRANZA:firma_id, podbranza_id > > chyba widac o co chodzi :)
No wlasnie nie do konca. Brak troche opisu, czy przynaleznosc do podbranzy przeklada sie zawsze na wpis w tabeli FIRMA_BRANZA. A moze ta tabela FIRMA_BRANZA tylko wpisy gdy do firmy nie nalezy zadna podbranza z wybranej branzy. Brak tez umiejscowienia informacji ktore podbranze naleza do ktorej branzy (wogole jakiego typu jest to relacja) Ja zalozylem, ze w tabeli PODBRANZA znajduje sie pole branza_id (relacja jeden do wielu) i ze przynaleznosc firmy do podbranzy generuje przynaleznosc do branzy i wyszlo mi cos takiego:
SELECT tb.branza_id, tb.branza_nazwa, tp.podbranza_id, tp.podbranza_nazwa FROM firma_branza tfb JOIN branza tb ON (tb.branza_id = tfb.branza) LEFT JOIN firma_podbranza tfp ON (tfp.firma_id = tfb.firma_id) LEFT JOIN podbranza tp ON (tp.podbranza_id = tfp.podbranza_id AND tfp.branza_id = tb.branza_id) WHERE tfb.firma_id = ".$dane['firma_id']
Mam nadzieje ze nic nie pomylilem :) Pozdrawiam
Sebastian
sd - 11-11-2005 11:38
Sebastian napisał(a):
> SELECT tb.branza_id, tb.branza_nazwa, tp.podbranza_id, tp.podbranza_nazwa > FROM firma_branza tfb > JOIN branza tb ON (tb.branza_id = tfb.branza) > LEFT JOIN firma_podbranza tfp ON (tfp.firma_id = tfb.firma_id) > LEFT JOIN podbranza tp ON (tp.podbranza_id = tfp.podbranza_id AND > tfp.branza_id = tb.branza_id) > WHERE tfb.firma_id = ".$dane['firma_id']
ooo prawie dobrze ;) troche musialem pozmieniac, ale wyszlo prawie dobrze 5, 'rowery', , '' 5, 'rowery', , '' 1, 'gospodarka odpadami', 10, 'akumulatory' 1, 'gospodarka odpadami', , '' 7, 'uroda', , '' 7, 'uroda', 8, 'do ciała'
nie wiem czemu sie powtarzaja dwukrotnie te dane jakis GROUP BY pomoze?
w poprzednim poscie zapomnialem dodac ze w tabeli podbranza jest tez kolumna branza_id - zeby bylo wiadomo do ktorej branzy przypisana jest podbranza;) firma jezeli chce wybrac podbranze, to automatycznie jest wpisywana w tabeli branza jak i podbranza
dziekuje bardzo pozdrawiam
Sebastian - 11-11-2005 11:39
>> SELECT tb.branza_id, tb.branza_nazwa, tp.podbranza_id, tp.podbranza_nazwa >> FROM firma_branza tfb >> JOIN branza tb ON (tb.branza_id = tfb.branza) >> LEFT JOIN firma_podbranza tfp ON (tfp.firma_id = tfb.firma_id) >> LEFT JOIN podbranza tp ON (tp.podbranza_id = tfp.podbranza_id AND >> tfp.branza_id = tb.branza_id) >> WHERE tfb.firma_id = ".$dane['firma_id'] > ooo prawie dobrze ;) > troche musialem pozmieniac, ale wyszlo prawie dobrze > 5, 'rowery', , '' > 5, 'rowery', , '' > 1, 'gospodarka odpadami', 10, 'akumulatory' > 1, 'gospodarka odpadami', , '' > 7, 'uroda', , '' > 7, 'uroda', 8, 'do ciała' > > nie wiem czemu sie powtarzaja dwukrotnie te dane > jakis GROUP BY pomoze? >
Mala poprawka: A powinno chyba byc: SELECT tb.branza_id, tb.branza_nazwa, tp.podbranza_id, tp.podbranza_nazwa FROM firma_branza tfb JOIN branza tb ON (tb.branza_id = tfb.branza) LEFT JOIN firma_podbranza tfp ON (tfp.firma_id = tfb.firma_id AND tfp.branza_id = tb.branza_id) LEFT JOIN podbranza tp ON (tp.podbranza_id = tfp.podbranza_id) WHERE tfb.firma_id = ".$dane['firma_id']
Juz powinno dzialac. Nie wiem dlaczego tak zle umiescilem ten warunek zlaczenia, ale tak to jest jak sie pisze bez tabeli w tle na ktorej mozna od razu zobaczyc wynik. Sprawdz na danych czy juz bedzie ok. Pozdrawiam
Sebastian
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
plik corel 11 na corel 8 = problem z otwarciem
zanotowane.pldoc.pisz.plpdf.pisz.plkfia-tek.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|