ďťż
 
[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?= ďťż
 
[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?=
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] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=



sawic - 03-04-2006 00:08
[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?=
  Witam.
Mam taką sytuacje:
tabele:
tb1, tb2

struktura tb1:
- id (int)
- pole1 (float)
- pole2 (date)

struktura tb2:
-id (int)
- pole1 (float)
- pole3 (timestamp)

zawartosc tb1 (pole1 - pole2): 5 - 2006-03-01; 10 - 2006-03-01; -5 -
2006-03-02.
zawartosc tb2 (pole1 - pole3): 10 - 2006-03-01 17:58:02; -10 -
2006-03-03 18:12:11.

Muszę zadać takie pytanie aby wyciagnac z bazy sumę pole1 dla danego
dnia zlozona z dwoch tabel w jeden wynik.
Czyli powinno to wygladac tak:

tb1.pole1 | tb2.pole1 | data
15 | 10 | 2006-03-01
-5 | 0 | 2006-03-02
0 | -10 | 2006-03-03

Dla jednej tabeli to pikuś (select sum(pole1) ... group by pole2), ale
dla dwóch na raz to już koszmar. Nie wiem jak się do tego zabrać.
Wolałbym też uniknąć UNION, ze względu na jego implementację w php > 4.0
a nie wiem na jakiej bazie przyjdzie mi kiedyś pracować.
Kombinowałem z join, i to chyba będzie to, ale niestety coś nie halo.

Proszę o jakieś naprowadzenie mnie na trop, podanie podobnego przykładu,
ewentualnie napisanie gotowca, bo sam raczej nic tu nie poradze.

Pozdrawiam





Wojtek pBT (prac) - 04-04-2006 00:08

  sawic napisał(a):
> Witam.

cze
[ciach]

> Dla jednej tabeli to pikuś (select sum(pole1) ... group by pole2), ale
> dla dwóch na raz to już koszmar. Nie wiem jak się do tego zabrać.
> Wolałbym też uniknąć UNION, ze względu na jego implementację w php > 4.0

A co ma PHP do UNION?

Tak wlasciwie to bez podzapytan raczej bedzie ciezko...
Tabela tymczasowa Cie wtedy ratuje.
Dodatkowym ratunkiem dal Ciebimoze byc to, ze w kazdej z tabel data
wystepje conajwyzej raz:

SELECT tabl1.pole + tab2.pole, tab1.data FROM tab1 OUTER JOUN tab2 ON
data_format(tab1.data,..) = date_format(tab2.data,...)

pBT




sawic - 04-04-2006 00:08

  Wojtek pBT (prac) napisał(a):
> A co ma PHP do UNION?
Mój błąd, ale wiadomo o co chodziło.

>
> Tak wlasciwie to bez podzapytan raczej bedzie ciezko...
> Tabela tymczasowa Cie wtedy ratuje.
> Dodatkowym ratunkiem dal Ciebimoze byc to, ze w kazdej z tabel data
> wystepje conajwyzej raz:
>
> SELECT tabl1.pole + tab2.pole, tab1.data FROM tab1 OUTER JOUN tab2 ON
> data_format(tab1.data,..) = date_format(tab2.data,...)
>
No właśnie data występuje wiele razy.
Obecnie załatwiłem to takimi zapytaniami :

$pytanie = "select sum(pole1), DayOfMonth(pole2) as data from db.tb1
where pole2 like '2006-03-%' group by pole2 order by pole2";

while ($line = mysql_fetch_array($pytanie))
{
$data = $line['data'];
$pytanie1 = "select sum(pole1) from db.tb2 where
DayOfMonth(date(pole3)) = '$data' and pole3 like '2006-03-%';
}

Narazie operuje na takim zapytaniu i to działa.
Jedynym ograniczeniem jest to, że jeżeli w tb1 nie będzie konkretnego
dnia miesiąca to tb2 nie zostanie dla tego dnia odpytane.
Narazie taka sytuacja nie miała miejsca, i raczej nie prędko będzie
miała, ale nie satysfakcjonuje mnie to, rozwiązanie musi być pewne w 100%.

Czy wobec nowych faktów, mógłby mi ktoś podpowiedzieć odpowiednie
rozwiązanie ?

Pozdrawiam




keczerad - 04-04-2006 00:08

  Wojtek pBT (prac) napisał(a):

> SELECT tabl1.pole + tab2.pole, tab1.data FROM tab1 OUTER JOUN tab2 ON
> data_format(tab1.data,..) = date_format(tab2.data,...)

to powino zwrocic wszystkie rekordy (pisze z pamieci ale powinno byc oki)

SELECT (isnull(a.pole,0) + isnull(b.pole,0)) as 'Suma', case when a.data
is null then b.data else a.data end as 'Data' FROM tab1 a
Right JOIN tab2 b ON
(data_format(a.data,'%Y-%m-%d') = date_format(b.data,'%Y-%m-%d'))

--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML





sawic - 04-04-2006 00:08

  keczerad napisał(a):
> to powino zwrocic wszystkie rekordy (pisze z pamieci ale powinno byc oki)
>
> SELECT (isnull(a.pole,0) + isnull(b.pole,0)) as 'Suma', case when a.data
> is null then b.data else a.data end as 'Data' FROM tab1 a
> Right JOIN tab2 b ON
> (data_format(a.data,'%Y-%m-%d') = date_format(b.data,'%Y-%m-%d'))
>

Witam.
Tylko, że ja nie chcę sumować pól z dwóch tabel ze sobą, a jedynie chce
zsumować pola w jednej tabeli, gdzie data jest taka sama.
A następnie podać wynik w postaci suma z tb1, suma z tb2, data.

Ale już coś mnie powyższe powoli naprowadza na trop.
Z tym, że za lotny w tym to nie jestem :(

Jeżeli jeszcze komuś chciało by się pokombinować to 2 posty wyżej
przedstawiłem sposób w jaki to tymczasowo rozwiązałem (oczywiście nie za
dobry).

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Gdzie MySQL 4.1, a gdzie 5.0? [MS SQL] "set names" (mySQL) w MS SQL oracle -> oracle lub oracle -> mysql replikacja - programy [MySQL] Zwrot tego, co pasuje i nie pasuje :-/ [pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1 [mysql] galeria zdjec - numerowanie zdjec [mysql] CONCAT agregujący, ale nie GROUP_CONCAT() mysql data 0000-00-00 na koniec [MySQL] Problem z zapisem danych w bazie danych jak przenieesc czesc tabeli do innej tabeli MySQL
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nocnerozmowy.xlx.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