ďťż
 
Newbie - pytanie o zapytanie ;-). ďťż
 
Newbie - pytanie o zapytanie ;-).
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

Newbie - pytanie o zapytanie ;-).



Szczepan - 07-01-2007 00:10
Newbie - pytanie o zapytanie ;-).
  Witam.

Proszę o pomoc.
Założeniem jest aplikacja, w której jedna osoba przyjmuje zlecenie dla
innej, ale to zlecenie moze byc wykonane przez jeszcze kogos innego. Z
polskiego na nasze: Pani Basia przyjmuje zlecenie dla Pana Jana, ale ze
wzgledu, ze Janek zapil wykonuje je Pan Tomasz. Oczywiscie inne zadanie
wykonuje ta osoba, której je zlecona, a w jeszcze innym przypadku, zlecenie
jest w trakcie realizacji i wartość pola dla kogo jest [null].

Tabela uzytkownicy:
iduzytkownika
imie
nazwisko
Dane:
iduzytkownika imie nazwisko
1 Basia Pozadnicka
2 Tomasz Sumienny
3 Jan Pijaczyna

Tabela zadania:
idzadania
opis
id_kto_wprowadzi
id_dla_kogo
id_kto_wykonal

idzadania opis id_kto_wprowadzil id_dla_kogo
id_kto_wykonal
1 wymien zarowke 1 3 2
2 wymien opony 1 2 [null]
3 zastanow sie co
robisz ;-) 1 3 3

------------------------------------------------------------------------------------

Jak powinno wygladac prawidlowe zapytanie, ktore w wyniku zwroci:

idzadania opis ??id_kto_wprowadzil ??id_dla_kogo
??id_kto_wykonal
1 wymien zarowke Basia Jan Tomasz
2 wymien opony Basia Tomasz [null]
3 zastanow sie co
robisz ;-) Basia Jan Jan





Szczepan - 07-01-2007 00:11

  Zeby nie bylo, ze czekam na gotowca, po wykonaniu takiego zapytania

SELECT *
FROM zadania z LEFT OUTER JOIN uzytkownicy u ON z.kto_wykonal =
u.iduzytkownika

otrzymuje prawie to o co mi chodzi z tym ze imiona i nazwiska pasuja do
identyfikatorow osob ktore WYKONALY zadanie, jak jeszcze dodac dodatkowe
kolumny z imionami i nazwiskami osob, ktore wprowadzily zadanie oraz dla
kogo zadanie bylo.

Zapytanie:

SELECT *
FROM zadania z LEFT OUTER JOIN uzytkownicy u ON z.kto_wykonal =
u.iduzytkownika
LEFT OUTER JOIN uzytkownicy uz ON z.dla_kogo = uz.iduzytkownika

co prawda w efekcie dodaje dodatkowe kolumny, ale sa one puste.

Jezeli to co pisze jest troche pokretnie i niejasno wyjasnione prosze o
informacje, postaram sie ubrac to w inne slowa i inaczej wyjasnic problem.

Naprawde bardzo potrzebuje pomocy w tej sprawie.




=?iso-8859-2?q?Jakub_`je=BF=2Fjezik'_Kolasa?= - 07-01-2007 00:11

  Szczepan (Sat, 06 Jan 2007 22:28:23 +0100) napisał(a):

>
> Naprawde bardzo potrzebuje pomocy w tej sprawie.
Na szybko, spróbuj swoje poprawić do postaci mniej więcej:

SELECT idzadania,opis,i1.imie,i2.imie,i3.imie
FROM zadania z
LEFT OUTER JOIN uzytkownicy i1 ON z.id_kto_wykonal = i1.iduzytkownika
LEFT OUTER JOIN uzytkownicy i2 ON z.id_kto_wprowadzil dla_kogo =
i2.iduzytkownika LEFT OUTER JOIN uzytkownicy i3 ON
z.id_kto_wykonal = i3.iduzytkownika

Przemyśl ew. optymalizację lub widok lub zdaj się na
mechanizmy optymalizacji wewnątrz enginów SQL.

Pozdrawiam

--
Jakub 'jezik/nemesis' Kolasa

`Given enough eyeballs, all bugs are shallow'
Linus' Law, Eric Raymond




Szczepan - 08-01-2007 00:25

  > SELECT idzadania,opis,i1.imie,i2.imie,i3.imie
> FROM zadania z
> LEFT OUTER JOIN uzytkownicy i1 ON z.id_kto_wykonal = i1.iduzytkownika
> LEFT OUTER JOIN uzytkownicy i2 ON z.id_kto_wprowadzil dla_kogo =
> i2.iduzytkownika LEFT OUTER JOIN uzytkownicy i3 ON
> z.id_kto_wykonal = i3.iduzytkownika

Powyzsze rozwiazanie niestety nie przynioslo pozadanego efektu, ale przy
malej modyfikacji i dodaniu unikalnych nazw kolumn wszystko smiga jak
nalezy. Dla potomnych podaje jak to zapytanie powinno wygladac (w klauzuli
SELECT dodano nazwy kolumn AS imie1 itd):

SELECT idzadania,opis,i1.imie AS imie1,i2.imie AS imie2,i3.imie AS imie3
FROM zadania z
LEFT OUTER JOIN uzytkownicy i1 ON z.id_kto_wykonal = i1.iduzytkownika
LEFT OUTER JOIN uzytkownicy i2 ON z.id_kto_wprowadzil dla_kogo =
i2.iduzytkownika
LEFT OUTER JOIN uzytkownicy i3 ON z.id_kto_wykonal = i3.iduzytkownika

Pozdrawiam.





=?iso-8859-2?q?Jakub_`je=BF=2Fjezik'_Kolasa?= - 09-01-2007 00:01

  Szczepan (Sun, 07 Jan 2007 10:59:40 +0100) napisał(a):

> Powyzsze rozwiazanie niestety nie przynioslo pozadanego efektu, ale przy
> malej modyfikacji i dodaniu unikalnych nazw kolumn wszystko smiga jak
> nalezy. Dla potomnych podaje jak to zapytanie powinno wygladac (w klauzuli
> SELECT dodano nazwy kolumn AS imie1 itd):
[cut]

Jak pisałem, było na szybko bez sprawdzenia -- miałeś sam sprawdzić i
dostosować ;-)

> Pozdrawiam.
Pozdrawiam

--
Jakub 'jezik/nemesis' Kolasa

`Given enough eyeballs, all bugs are shallow'
Linus' Law, Eric Raymond
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [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?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.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