ďťż
 
[mysql] JOIN ďťż
 
[mysql] JOIN
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

[mysql] JOIN



Proton - 11-11-2005 11:41
[mysql] JOIN
  Czesc,

przyznam sie ze teraz pisze z lenistwa ;-),

Zalozenia:
1. dwie tabele
a. pozycje do dokumentu produkcyjnego
b. receptury wyrobow
2. W receptuze np. na produkcje stolka jest 5 elementow o id 1,2,3,4,5
3. ktos na dokumencie wpisal 5 pozycji o id 3,4,5,6,7
4. te id to identyfikatory surowcow z trzeciej tabeli
5. elementem wspolnym jest id_wyrobu np 100

Pytanie :
jaki JOIN ew. bardziej rozbudowane zapytanie zeby w wyniku uzyskac wszystkie
7 wierszy czyli pozycje z obydwoch tabel o id 1,2,3,4,5,6,7

moze banalne ale juz mam juz na dzisiaj dosc kombinowania wiec moze ktos sie
zlituje i podpowie ??
--
pozdro
Proton





fasol - 11-11-2005 11:41

  > przyznam sie ze teraz pisze z lenistwa ;-),
>
> Zalozenia:
> 1. dwie tabele
> a. pozycje do dokumentu produkcyjnego
> b. receptury wyrobow
> 2. W receptuze np. na produkcje stolka jest 5 elementow o id 1,2,3,4,5
> 3. ktos na dokumencie wpisal 5 pozycji o id 3,4,5,6,7
> 4. te id to identyfikatory surowcow z trzeciej tabeli
> 5. elementem wspolnym jest id_wyrobu np 100
>
> Pytanie :
> jaki JOIN ew. bardziej rozbudowane zapytanie zeby w wyniku uzyskac
wszystkie
> 7 wierszy czyli pozycje z obydwoch tabel o id 1,2,3,4,5,6,7
>
> moze banalne ale juz mam juz na dzisiaj dosc kombinowania wiec moze ktos
sie
> zlituje i podpowie ??
> --

select id_surowca from pozycje
where id_wyrobu = 100
union
select id_surowca from recepury
where id_wyrobu = 100




Proton - 11-11-2005 11:41

 
Użytkownik "fasol" <solu@poczta.onet.pl> napisał w wiadomości
news:dkv0vh$7gr$1@nemesis.news.tpi.pl...
>> przyznam sie ze teraz pisze z lenistwa ;-),
> select id_surowca from pozycje
> where id_wyrobu = 100
> union
> select id_surowca from recepury
> where id_wyrobu = 100
>
>

Niestety to za proste bo wtedy wyswietli 10 wierszy - po 5 z kazdej tabeli a
ja potrzebuje miec w wyniku 7 - 3 wspolne i po 2 pozostale
Acha i jeszcze jedno:
raport, ktory bedzie z tego korzystal jest, ze tak sie wyraze, baaaaardzo
rozbudowany, ale oczywiscie reszte mam juz opracowana. W zwiazku z tym
zalezy mi na jak najbardziej eleganckim (szybkim ?) rozwiazaniu.
--
pozdro
Proton




fasol - 11-11-2005 11:41

 
> > select id_surowca from pozycje
> > where id_wyrobu = 100
> > union
> > select id_surowca from recepury
> > where id_wyrobu = 100
> >
> >
>
> Niestety to za proste bo wtedy wyswietli 10 wierszy - po 5 z kazdej tabeli
a
> ja potrzebuje miec w wyniku 7 - 3 wspolne i po 2 pozostale
> Acha i jeszcze jedno:
> raport, ktory bedzie z tego korzystal jest, ze tak sie wyraze, baaaaardzo
> rozbudowany, ale oczywiscie reszte mam juz opracowana. W zwiazku z tym
> zalezy mi na jak najbardziej eleganckim (szybkim ?) rozwiazaniu.
> --

Poniższa konstrukcja powinna zwrócić Ci wszystkie pozycje

select id_surowca from pozycje
where id_wyrobu = 100
union all
select id_surowca from recepury
where id_wyrobu = 100

Natomiast użycie UNION nie powinno zawierać powtórzeń





Andrzej Dąbrowski - 11-11-2005 11:41

 

select DISTINCT id_surowca from 3 tabela where
id_surowca in (
select id_surowca from pozycje
where id_wyrobu = 100
union
select id_surowca from recepury
where id_wyrobu = 100)

Andrzej Dąbrowski




Proton - 11-11-2005 11:41

 
Użytkownik "Andrzej Dąbrowski" <andrzejd@sims.pl> napisał w wiadomości
news:dkv4p1$avv$1@atlantis.news.tpi.pl...
>
>
>
> select DISTINCT id_surowca from 3 tabela where
> id_surowca in (
> select id_surowca from pozycje
> where id_wyrobu = 100
> union
> select id_surowca from recepury
> where id_wyrobu = 100)
>
> Andrzej Dąbrowski

niom - mysle, ze to o to mi chodzilo : sprawdze i dam znac
W kazdym razie dzieki wszystkim :-)
--
pozdro
Proton




Proton - 11-01-2006 09:09

 
Użytkownik "Andrzej Dąbrowski" <andrzejd@sims.pl> napisał w wiadomości
news:dkv4p1$avv$1@atlantis.news.tpi.pl...
>
>
>
> select DISTINCT id_surowca from 3 tabela where
> id_surowca in (
> select id_surowca from pozycje
> where id_wyrobu = 100
> union
> select id_surowca from recepury
> where id_wyrobu = 100)

posluzylem sie Twoja porada ale w troche inny sposob
Stworzylem konstrukcje o nastepujacej budowie:

SELECT *
FROM
(
SELECT .....
FROM tab1
LEFT JOIN tab2
....
WHERE
...

UNION

SELECT .....
FROM tab3
LEFT JOIN tab2
....
WHERE
...
)
LEFT JOIN ....
WHERE ...
GROUP BY ..... WITH ROLLUP

Czyli UNION wrzucilem do klauzuli FROM zapytania glownego i pieknie to
dziala. Jezeli ktos jest zainteresowany to moge wkleic pelny kod z analiza i
objasnieniami.
Tak przy okazji okazalo sie, ze taka konstrukcja jest najszybsza z tych,
ktore probowalem wdrozyc, mimo ze ostatecznie zawiera sporo kodu i dziala na
sporej liczbie danych. I dodatkowo daje duze mozliwosci w kwestii operowania
na tych danych - rozne wersje podsumowan, grupowania danych itp.
--
pozdrawiam
Proton
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • morebeer.opx.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