ďťż
 
pobranie wynikow z kilku tabel - problem z wynikami ďťż
 
pobranie wynikow z kilku tabel - problem z wynikami
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kfia-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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com