🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
8 messages
8 total messages Started by Marek Cz. Wed, 28 Oct 2015 20:50
[MySQL] Dwa klucze obce z jednej tabeli
#82605
Author: Marek Cz.
Date: Wed, 28 Oct 2015 20:50
58 lines
2751 bytes
  W uproszczeniu są trzy tabele, Serials (główna), Users i Devices:

  Serials:
    ID: INTEGER
    Serial: VARCHAR(20)
    DeviceType: INTEGER (klucz obcy Devices.ID)
    CreatedBy: INTEGER  (klucz obcy Users.ID)
    ModifiedBy: INTEGER (klucz obcy Users.ID)

  Users:
    ID: INTEGER
    FirstName: VARCHAR(50)
    LastName: VARCHAR(50)

  Devices:
   ID: INTEGER
   DeviceName: VARCHAR(20)

  Jakie powinno być zapytanie do bazy, aby przedstawić całą główną tabelę "Serials",
  w której klucze obce zostaną zastąpione nazwami z tabel "Users" i "Devices",
  czyli wynikowa tabela będzie miała kolumny np. takie:

  Serial
  DeviceName
  CreatedByFirstName
  CreatedByLastName
  ModifiedByFirstName
  ModifiedByLastName

gdzie

   Serial: pochodzi oczywiście z tabeli Serials

   DeviceName: nazwa urządzenia z tabeli Devices.DeviceName określona
                          na podstawie klucza Serials.DeviceType

  CreatedByFirstName: imię użytkownika z tabeli Users.FirstName określone
                                      na podstawie klucza Serials.CreatedBy

  CreatedByLastName: nazwisko użytkownika z tabeli Users.LastName określone
                                      na podstawie klucza Serials.CreatedBy

  ModifiedByFirstName: imię użytkownika z tabeli Users.FirstName określone
                                       na podstawie klucza Serials.ModifiedBy

  ModifiedByLastName: nazwisko użytkownika z tabeli Users.LastName określone
                                       na podstawie klucza Serials.ModifiedBy

  Jak można zauważyć, w tabeli "Serials" występują dwie kolumny CreatedBy i ModifiedBy
   z kluczami obcymi powiązanymi z ID z jednej tabeli, czyli  "Users". Wartości tych kluczy
  mogą być różne w jednym rekordzie i dlatego nie wiem, jak skonstruować zapytanie,
  aby uzyskać oczekiwaną tabelę.

Proszę o pomoc :)

-- 
Marek
Re: [MySQL] Dwa klucze obce z jednej tabeli
#82607
Author: arivald
Date: Thu, 29 Oct 2015 06:32
81 lines
3373 bytes
W dniu 2015-10-28 o 21:50, Marek Cz. pisze:
>
>   W uproszczeniu są trzy tabele, Serials (główna), Users i Devices:
>
>   Serials:
>     ID: INTEGER
>     Serial: VARCHAR(20)
>     DeviceType: INTEGER (klucz obcy Devices.ID)
>     CreatedBy: INTEGER  (klucz obcy Users.ID)
>     ModifiedBy: INTEGER (klucz obcy Users.ID)
>
>   Users:
>     ID: INTEGER
>     FirstName: VARCHAR(50)
>     LastName: VARCHAR(50)
>
>   Devices:
>    ID: INTEGER
>    DeviceName: VARCHAR(20)
>
>   Jakie powinno być zapytanie do bazy, aby przedstawić całą główną
> tabelę "Serials",
>   w której klucze obce zostaną zastąpione nazwami z tabel "Users" i
> "Devices",
>   czyli wynikowa tabela będzie miała kolumny np. takie:
>
>   Serial
>   DeviceName
>   CreatedByFirstName
>   CreatedByLastName
>   ModifiedByFirstName
>   ModifiedByLastName
>
> gdzie
>
>    Serial: pochodzi oczywiście z tabeli Serials
>
>    DeviceName: nazwa urządzenia z tabeli Devices.DeviceName określona
>                           na podstawie klucza Serials.DeviceType
>
>   CreatedByFirstName: imię użytkownika z tabeli Users.FirstName określone
>                                       na podstawie klucza Serials.CreatedBy
>
>   CreatedByLastName: nazwisko użytkownika z tabeli Users.LastName określone
>                                       na podstawie klucza Serials.CreatedBy
>
>   ModifiedByFirstName: imię użytkownika z tabeli Users.FirstName określone
>                                        na podstawie klucza
> Serials.ModifiedBy
>
>   ModifiedByLastName: nazwisko użytkownika z tabeli Users.LastName
> określone
>                                        na podstawie klucza
> Serials.ModifiedBy
>
>   Jak można zauważyć, w tabeli "Serials" występują dwie kolumny
> CreatedBy i ModifiedBy
>    z kluczami obcymi powiązanymi z ID z jednej tabeli, czyli  "Users".
> Wartości tych kluczy
>   mogą być różne w jednym rekordzie i dlatego nie wiem, jak skonstruować
> zapytanie,
>   aby uzyskać oczekiwaną tabelę.

tu akurat MUSISZ użyć aliasów w joinach, żeby rozróżnić wiązania po 
różnych kluczach. A apliasy i tak się przydają, do skracania tekstu SQLa.

select
  s.Serial,
  d.DeviceName,
  c.CreatedBy as CreatedByFirstName,
  c.LastName as CreatedByLastName,
  m.FirstName as ModifiedByFirstName,
  m.LastName as ModifiedByLastNam

from Serials s
left join Devices d on d.ID = s.DeviceType
left join Users c on c.ID = s.CreatedBy
left join Users m on m.ID = s.ModifiedBy

-- 
Arivald
Re: [MySQL] Dwa klucze obce z jednej tabeli
#82608
Author: Marek
Date: Thu, 29 Oct 2015 14:13
60 lines
3000 bytes
Użytkownik "Marek Cz." <nomail@wp.pl> napisał w wiadomości news:xn0jstcud1iyaee001@news.atman.pl...
>
>  W uproszczeniu są trzy tabele, Serials (główna), Users i Devices:
>
>  Serials:
>    ID: INTEGER
>    Serial: VARCHAR(20)
>    DeviceType: INTEGER (klucz obcy Devices.ID)
>    CreatedBy: INTEGER  (klucz obcy Users.ID)
>    ModifiedBy: INTEGER (klucz obcy Users.ID)
>
>  Users:
>    ID: INTEGER
>    FirstName: VARCHAR(50)
>    LastName: VARCHAR(50)
>
>  Devices:
>   ID: INTEGER
>   DeviceName: VARCHAR(20)
>
>  Jakie powinno być zapytanie do bazy, aby przedstawić całą główną tabelę "Serials",
>  w której klucze obce zostaną zastąpione nazwami z tabel "Users" i "Devices",
>  czyli wynikowa tabela będzie miała kolumny np. takie:
>
>  Serial
>  DeviceName
>  CreatedByFirstName
>  CreatedByLastName
>  ModifiedByFirstName
>  ModifiedByLastName
>
> gdzie
>
>   Serial: pochodzi oczywiście z tabeli Serials
>
>   DeviceName: nazwa urządzenia z tabeli Devices.DeviceName określona
>                          na podstawie klucza Serials.DeviceType
>
>  CreatedByFirstName: imię użytkownika z tabeli Users.FirstName określone
>                                      na podstawie klucza Serials.CreatedBy
>
>  CreatedByLastName: nazwisko użytkownika z tabeli Users.LastName określone
>                                      na podstawie klucza Serials.CreatedBy
>
>  ModifiedByFirstName: imię użytkownika z tabeli Users.FirstName określone
>                                       na podstawie klucza Serials.ModifiedBy
>
>  ModifiedByLastName: nazwisko użytkownika z tabeli Users.LastName określone
>                                       na podstawie klucza Serials.ModifiedBy
>
>  Jak można zauważyć, w tabeli "Serials" występują dwie kolumny CreatedBy i ModifiedBy
>   z kluczami obcymi powiązanymi z ID z jednej tabeli, czyli  "Users". Wartości tych kluczy
>  mogą być różne w jednym rekordzie i dlatego nie wiem, jak skonstruować zapytanie,
>  aby uzyskać oczekiwaną tabelę.

Już nieaktualne.

-- 
Marek
Re: [OT] [MySQL] Dwa klucze obce z jednej tabeli
#82610
Author: wloochacz
Date: Thu, 29 Oct 2015 19:01
10 lines
1480 bytes
W dniu 2015-10-29 o 15:13, Marek pisze:
> Już nieaktualne.
A uj nas obchodzi, czy aktualne.
Zadałeś podstawowe pytanie, na które google wypluje odpowiedź w 0,0002s

Przyzwoitość podpowiada, że zamiast "nieaktualne" powinieneś napisać 
"dziękuję".

-- 
wloochacz
Re: [OT] [MySQL] Dwa klucze obce z jednej tabeli
#82609
Author: Marek Cz.
Date: Thu, 29 Oct 2015 21:37
24 lines
1940 bytes
Użytkownik "wloochacz" <wloochacz@no.spam.gmail.com> napisał w 
wiadomości news:xn0jstcud1iyaee001@news.atman.pl...
>W dniu 2015-10-29 o 15:13, Marek pisze:
>>Już nieaktualne.
>A uj nas obchodzi, czy aktualne.
>Zadałeś podstawowe pytanie, na które google wypluje odpowiedź w 0,0002s
>
>Przyzwoitość podpowiada, że zamiast "nieaktualne" powinieneś napisać 
>"dziękuję".

    Zdziwiłem się, za co powinienem napisać "dziękuję", skoro nie otrzymałem żadnej
  odpowiedzi, jak się jednak okazało, odpowiedział kolega Arivald, za co mu bardzo
  dziękuję, lecz odpowiedzi tej nie ma niestety na serwerze grup z którego korzystam
(news.atman.pl), znalazłem ją potem na grupach google. Muszę zmienić 
serwer
grup, bo nie wszystkie posty dochodzą. Może jakiś polecicie bez 
ograniczeń
dostępu?

    Jeszcze apropos mojego pytania, to jakie słowa kluczowe należałoby wpisać
  w google, żeby znaleźć odpowiedź na to moje "podstawowe pytanie"?

-- 
Marek
Re: [OT] [MySQL] Dwa klucze obce z jednej tabeli
#82611
Author: wloochacz
Date: Fri, 30 Oct 2015 10:30
30 lines
2253 bytes
W dniu 2015-10-29 o 22:37, Marek Cz. pisze:
> Użytkownik "wloochacz" <wloochacz@no.spam.gmail.com> napisał w
> wiadomości news:xn0jstcud1iyaee001@news.atman.pl...
>> W dniu 2015-10-29 o 15:13, Marek pisze:
>>> Już nieaktualne.
>> A uj nas obchodzi, czy aktualne.
>> Zadałeś podstawowe pytanie, na które google wypluje odpowiedź w 0,0002s
>>
>> Przyzwoitość podpowiada, że zamiast "nieaktualne" powinieneś napisać
>> "dziękuję".
>
>     Zdziwiłem się, za co powinienem napisać "dziękuję", skoro nie
> otrzymałem żadnej
>   odpowiedzi, jak się jednak okazało, odpowiedział kolega Arivald, za co
> mu bardzo
>   dziękuję, lecz odpowiedzi tej nie ma niestety na serwerze grup z
> którego korzystam
> (news.atman.pl), znalazłem ją potem na grupach google. Muszę zmienić serwer
> grup, bo nie wszystkie posty dochodzą. Może jakiś polecicie bez ograniczeń
> dostępu?
OK, to wiele tłumaczy.

>     Jeszcze apropos mojego pytania, to jakie słowa kluczowe należałoby
> wpisać
>   w google, żeby znaleźć odpowiedź na to moje "podstawowe pytanie"?
Np tak:
http://bfy.tw/2Xtk

-- 
wloochacz
Re: [OT] [MySQL] Dwa klucze obce z jednej tabeli
#82613
Author: miab
Date: Fri, 30 Oct 2015 11:19
24 lines
2226 bytes
W dniu 2015-10-29 o 22:37, Marek Cz. pisze:
> Użytkownik "wloochacz" <wloochacz@no.spam.gmail.com> napisał w
> wiadomości news:xn0jstcud1iyaee001@news.atman.pl...
>> W dniu 2015-10-29 o 15:13, Marek pisze:
>>> Już nieaktualne.
>> A uj nas obchodzi, czy aktualne.
>> Zadałeś podstawowe pytanie, na które google wypluje odpowiedź w 0,0002s
>>
>> Przyzwoitość podpowiada, że zamiast "nieaktualne" powinieneś napisać
>> "dziękuję".
>
>     Zdziwiłem się, za co powinienem napisać "dziękuję", skoro nie
> otrzymałem żadnej
>   odpowiedzi, jak się jednak okazało, odpowiedział kolega Arivald, za co
> mu bardzo
>   dziękuję, lecz odpowiedzi tej nie ma niestety na serwerze grup z
> którego korzystam
> (news.atman.pl), znalazłem ją potem na grupach google. Muszę zmienić serwer
> grup, bo nie wszystkie posty dochodzą. Może jakiś polecicie bez ograniczeń
> dostępu?

Zobacz news.neostrada.pl

miab
Re: [OT] [MySQL] Dwa klucze obce z jednej tabeli
#82612
Author: Marek
Date: Mon, 02 Nov 2015 06:19
34 lines
2375 bytes
Użytkownik "wloochacz" <wloochacz@no.spam.gmail.com> napisał w wiadomości news:563346ca$0$640$65785112@news.neostrada.pl...
>W dniu 2015-10-29 o 22:37, Marek Cz. pisze:
>> Użytkownik "wloochacz" <wloochacz@no.spam.gmail.com> napisał w
>> wiadomości news:xn0jstcud1iyaee001@news.atman.pl...
>>> W dniu 2015-10-29 o 15:13, Marek pisze:
>>>> Już nieaktualne.
>>> A uj nas obchodzi, czy aktualne.
>>> Zadałeś podstawowe pytanie, na które google wypluje odpowiedź w 0,0002s
>>>
>>> Przyzwoitość podpowiada, że zamiast "nieaktualne" powinieneś napisać
>>> "dziękuję".
>>
>>     Zdziwiłem się, za co powinienem napisać "dziękuję", skoro nie
>> otrzymałem żadnej
>>   odpowiedzi, jak się jednak okazało, odpowiedział kolega Arivald, za co
>> mu bardzo
>>   dziękuję, lecz odpowiedzi tej nie ma niestety na serwerze grup z
>> którego korzystam
>> (news.atman.pl), znalazłem ją potem na grupach google. Muszę zmienić serwer
>> grup, bo nie wszystkie posty dochodzą. Może jakiś polecicie bez ograniczeń
>> dostępu?
> OK, to wiele tłumaczy.
>
>>     Jeszcze apropos mojego pytania, to jakie słowa kluczowe należałoby
>> wpisać
>>   w google, żeby znaleźć odpowiedź na to moje "podstawowe pytanie"?
> Np tak:
> http://bfy.tw/2Xtk

Dzięki

-- 
Marek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads