A segítségeteket szeretném kérni egy sql lekérdezésben. (mysql DB)
termékkódok 1-99999 Arra lennék kíváncsi, hogy a lekérdezett hónapban milyen termékeket néztek meg, illetve egy-egy napon hányszor néztek meg egy terméket.
táblanév: "YYYYMM" (20090501)
mezők: DD (1-31)
tárolt adat: megtekintett termékkód
Köszönöm
- 1528 megtekintés
Hozzászólások
select termekkod from akarhonnan where datum = akarmi,
ill.
select termekkod, count(1) from akarhonnan where (itt a datum tarolasi metodusatol fuggoen az adott honapra szursz) group by termekkod
kb ilyesmi
t
- A hozzászóláshoz be kell jelentkezni
termekkod mező nincs.
id: bejelentkezett user id, továbbá 1-31db mező ami az adott naptári napot jelzi. A tábla neve YYYYMM
Valamit megtekint a user, akkor ebbe a táblába bekerül egy sor id és egy termékkód a megfelelő napra (pl. id=122 15=6512)
- A hozzászóláshoz be kell jelentkezni
Nyugtass meg: ezt készen kaptad így, és nem sk hoztad össze...
- A hozzászóláshoz be kell jelentkezni
Kapott anyag, csak a szívás van vele, de a csilli-villi miatt a főnök szereti. Őt nem érdekli, h mi van mögötte, nem cserélhető :(
- A hozzászóláshoz be kell jelentkezni
Részvétem!
Azért a szerzőnek érdemes volna elküldeni egy linket az adatbázisok normalizálásáról, mert még köztünk járhat, és bármikor újra lecsaphat.
- A hozzászóláshoz be kell jelentkezni
Megtekintett termékkódok adott hónapra:
select distinct tkod
from
(
select 1 as tkod
from tbl
union all
select 2 as tkod
from tbl
union all
...
union all
select 31 as tkod
from tbl
)
Napi bontás:
select count(1) as cnt
from tbl
where 3 = 115
ahol 3: nap mező,
115: termékkód
Jesszus...
- A hozzászóláshoz be kell jelentkezni
ROTFL :) made my day ahogy a vogonok mondanák.
Nem is szabad szétszedned más táblára?
- A hozzászóláshoz be kell jelentkezni
Egyébként ez a tárolási struktúra eléggé "szuboptimális".
Igazából egyetlen táblának kellene lennie, két mezővel:
DATUM date,
TERMEKKOD integer
- A hozzászóláshoz be kell jelentkezni
Sajnos ez van, ezzel kell dolgozni. Átvett adatbázis, korábbi adatokra kíváncsi a főnök.
- A hozzászóláshoz be kell jelentkezni
Ha korábbi adatokra kíváncsi, viszont riportokat szeretnek ebből sql-be oltott xls-ből, én biza simán beírnám az egészet egy privát táblába. Olyanba, amellyel dolgozni is lehet.
Az átkonvertáló szkript + a riportoló sql hossza pariban is volna annak az sql-nek a hosszával, amit most kell összekopipésztezni.
- A hozzászóláshoz be kell jelentkezni
Szerintem is egyszerűbb lesz (legalábbis nekem) mert hal megoldására
"
(select distinct tkod
from
(
select 1 as tkod
from tbl
union all
select 2 as tkod
from tbl
union all
...
union all
select 31 as tkod
from tbl
)
"
Az alábbi üzenet jön, amivel nem tudok mit kezdeni (de ez az én hibám)
Every derived table must have its own alias
- A hozzászóláshoz be kell jelentkezni
Sokkal inkább így:
select distinct tkod
from
(
select 1 as tkod
from tbl
union all
select 2 as tkod
from tbl
union all
...
union all
select 31 as tkod
from tbl
) t
Az alselectet el kell nevezni (t).
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Ez volt a hiba, kimaradt az elnevezés!
- A hozzászóláshoz be kell jelentkezni