🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #195125

Re: [mysql] Łączenie danych z wielu tabel

#195125
From: kamil.sobczyk
Date: Tue, 18 Oct 2016 11:00
108 lines
4155 bytes
W dniu wtorek, 18 października 2016 12:42:04 UTC+2 użytkownik artiun napisał:
> W dniu 2016-10-17 o 20:02, kamil.sobczyk@gmail.com pisze:
> > Witam,
> >
> > Mam tabele:
> > ||=Zawodnik
> > ||id_zawodnik (pk)
> > ||imie_nazwisko
> >
> > ||=Klub
> > ||id_klub (pk)
> > ||grupa_wiekowa
> > ||nazwa
> >
> > ||=BIEG5
> > ||id_zawodnik (pk)
> > ||id_szkolka (pk)
> > ||rok (pk)
> > ||kwartal (pk)
> > ||punkty_b5
> >
> > ||=BIEG10
> > ||id_zawodnik (pk)
> > ||id_szkolka (pk)
> > ||rok (pk)
> > ||kwartal (pk)
> > ||punkty_b10
> >
> > ||=BIEG30
> > ||id_zawodnik (pk)
> > ||id_szkolka (pk)
> > ||rok (pk)
> > ||kwartal (pk)
> > ||punkty_b30
> >
> >
> W jaki sposób zawodnik łączy się z klubem.
> Rok, kwartał to chyba określenie kiedy odbywają się zawody.
> Więc jak przypisać zawodnikowi grupę wiekową, jak przypisać do szkółki
> (id_szkolka, id_klub). Rozpisz to jeszcze raz.
> Co wg Ciebie znaczy pk? Ile pk może być w jednej tabeli?
> Sam CHAOS.
> 
> -- 
> Artur

Rozwiązanie tego chaosu ;)

SELECT
    Z.ID_ZAWODNIK
    ,S.ID_SZKOLKA
    ,S.GUPA_WIEKOWA
    ,B.ROK
    ,B.KWARTAL
    ,SUM(B.PB5) AS PUNKTY_B5
    ,SUM(B.PB10) AS PUNKTY_B10
    ,SUM(B.PB30) AS PUNKTY_B30
    ,SUM(B.PB) AS SUMA
FROM    
    ZAWODNIK AS Z
    INNER JOIN (
                SELECT
                    ID_ZAWODNIK
                    ,ID_SZKOLKA
                    ,ROK
                    ,KWARTAL
                    ,PUNKTY_B5 AS PB5
                    ,0 AS PB10
                    ,0 AS PB30
                    ,PUNKTY_B5 AS PB
                FROM
                    BIEG5
                UNION ALL
                SELECT
                    ID_ZAWODNIK
                    ,ID_SZKOLKA
                    ,ROK
                    ,KWARTAL
                    ,0 AS PB5
                    ,PUNKTY_B10 AS PB10
                    ,0 AS PB30
                    ,PUNKTY_B10 AS PB
                FROM
                    BIEG10
                UNION ALL
                SELECT
                    ID_ZAWODNIK
                    ,ID_SZKOLKA
                    ,ROK
                    ,KWARTAL
                    ,0 AS PB5
                    ,0 AS PB10
                    ,PUNKTY_B30 AS PB30
                    ,PUNKTY_B30 AS PB
                FROM
                    BIEG30
                    ) AS B ON B.ID_ZAWODNIK = Z.ID_ZAWODNIK
    INNER JOIN KLUB AS S ON S.ID_KLUB = B.ID_SZKOLKA
WHERE
    B.ROK=2012
    AND B.KWARTAL=3
    AND S.GRUPA_WIEKOWA = 11
GROUP BY
    Z.ID_ZAWODNIK
    ,S.ID_SZKOLKA
    ,S.GUPA_WIEKOWA
    ,B.ROK
    ,B.KWARTAL
Technical Details
Message-ID: <90e65a90-a2de-4a6f-bbe1-be122db4ebce@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!feeders.as203319.net!feeder02.as203319.net!2.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!f6no2078992qtd.0!news-out.google.com!203ni1733itk.0!nntp.google.com!66no728484itl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <f97272db-262f-4f16-912e-f32dacc7518b@googlegroups.com> <5805fc79$0$5164$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.200.54.221 with SMTP id b29mr660104qtc.54.1476788447638;        Tue, 18 Oct 2016 04:00:47 -0700 (PDT)
X-Received: by 10.157.54.141 with SMTP id h13mr132909otc.20.1476788447596; Tue, 18 Oct 2016 04:00:47 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!feeders.as203319.net!feeder02.as203319.net!2.eu.feeder.erje.net!feeder.erje.net!2.us.feeder.erje.net!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!f6no2078992qtd.0!news-out.google.com!203ni1733itk.0!nntp.google.com!66no728484itl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych
Date: Tue, 18 Oct 2016 04:00:47 -0700 (PDT)
In-Reply-To: <5805fc79$0$5164$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.238.28.151; posting-account=MZqKhQoAAAD5JCk5fBCRURrOJPrkLjus
NNTP-Posting-Host: 83.238.28.151
References: <f97272db-262f-4f16-912e-f32dacc7518b@googlegroups.com> <5805fc79$0$5164$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <90e65a90-a2de-4a6f-bbe1-be122db4ebce@googlegroups.com>
Subject: Re: [mysql] Łączenie danych z wielu tabel
From: kamil.sobczyk@gmail.com
Injection-Date: Tue, 18 Oct 2016 11:00:47 +0000
Lines: 110
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit