SQL kérdések - Szoftverfejlesztés fórum

üzenetek

hozzászólások


aton-hawk
(tag)

Sziasztok!
Egy újabb kérdés..:
Ezek a táblák vannak:
ANYAG {azonosító, a_név, mért_egys, készlet, átl_ár}
BESZERZÉS {dátum, azonosító, mennyiség, be_ár, áfa_sz}
TERMÉK {kód, t_név, akt_ár}
MINŐSÍTÉS {alsó, szöveg}
SZERKEZET {kód, azonosító, menny}
ÁRVÁLT {kód, mikor, régi_ár}
PARTNER {pkód, p_név, irsz, hely, utca, tel}
REND_FEJ {rendszám, kelt, hat_idő, pkód, végösszeg}
REND_TÉTEL {rendszám, kód, r_menny, kész}
ENGEDMÉNY {határ, százalék}

És ez pedig a kérdés: Kik azok a partnerek, akik legalább 1 éve nem rendeltek.
Remélem ebben még tudtok segíteni.
Előre is köszi.


Jester01
(veterán)
Blog

Gondolom a REND_FEJ táblából lehet ezt lekérdezni:
SELECT pkód FROM REND_FEJ GROUP BY pkód HAVING MAX(kelt) < NOW() - INTERVAL 1 YEAR

(ez így mysql szintaxis)

Ha a pkód-on kívül egyéb adatok is kellenek akkor azt nyilván a PARTNER táblából lehet megkapni.

[Szerkesztve]


aton-hawk
(tag)

aha..oks..köszi a segítséget ;)


concret_hp
(addikt)
Blog

van egy ilyen lekérdezésem:

SELECT COUNT(r_szam) AS darabszam
FROM gyart_rendelesek
WHERE rend_ido > add_months(sysdate,-12)
GROUP BY vevo;


ez a vevők rendelésszámát adja vissza és van egy ilyen:

SELECT gyart_vasarlok.vevo, gyart_vasarlok.adoszam, gyart_vasarlok.letrehozva
FROM gyart_vasarlok
WHERE ... ;


ez pedig a vásárlóim adatait kérdezi le, akik bizonyos feltételnek megfelelnek. azt szeretném, hogy mondjuk azok a vásárlók legyenek kilistázva akiknek 2 megrendelése van de ha ezt írom:

SELECT gyart_vasarlok.vevo, gyart_vasarlok.adoszam, gyart_vasarlok.letrehozva
FROM gyart_vasarlok
WHERE (SELECT COUNT(r_szam) AS darabszam
FROM gyart_rendelesek
WHERE rend_ido > add_months(sysdate,-12)
GROUP BY vevo)=2;


az ezt írja:
WHERE (SELECT COUNT(r_szam) AS darabszam
*
Hiba a(z) 3. sorban:
ORA-01427: single-row subquery returns more than one row

szóval valaki mondja meg plz, hogy hogyan kell :U


Jester01
(veterán)
Blog

Összakapcsolod a 2 táblát (join), csoportosítasz vevő szerint és szűrsz a darabszámra (HAVING COUNT(*) = 2)


Drizzt
(nagyúr)
Blog

Hogy lehet korábbi constraintet módosítani, illetve újat hozzáadni? Elvileg az Alter table xxx add xxx lenne a forma, nem? De valami baja van mindig. :S


Lortech
(addikt)

alter table tablanev add constraint attributumnev,...
A ''valami baja van mindig'' kellene nekünk (hibaüzenet?), lehet, hogy már tartalmaz olyan sorokat az oszlop, amik kizárják azt, hogy ráhúzd az egyedi megszorítást.


Drizzt
(nagyúr)
Blog

Megoldottam.


Drizzt
(nagyúr)
Blog

Viszont teszek fel kérdést. Van két tábla: filmek, s kölcsönzések, a lekérdezés a következő lenne: 1 évnél nem régebben kivett filmek lekérdezése, illetve amit nem vettek ki, annál soha kiírása. decode-ot, vagy nvl-t kéne használni.
Decodenál lehet olyan feltételt megadni, hogy valaminél nagyobb legyen a kifejezés? Ha igen, hogy?
Mert így nem jó:
decode(borrows.dateofcreation, null, 'SOHA',
>sysdate-365, borrows.dateofcreation)

(mondjuk nem lep meg, de mit lehet ilyenkor kezdeni?)


rdi
(veterán)
Blog

acces lekérdezések szerkesztőlécen utána nézetváltás sql nézetre (bár nem biztos, hogy szabályos lesz)

igaz, ahogy látom Ti kódból nyomjátok :))

[Szerkesztve]


Jester01
(veterán)
Blog

Izé, ha azokat kell kiírni amiket egy évnél nem régebben vagy soha nem vettek ki, akkor úgyis van where szûrés, szóval a decode-ban már nem kell vele foglalkozni. Ha a dateofcreation dátum típusú, akkor azt lehet, hogy még szöveggé is illene konvertálni.

Kb valami ilyesmire gondoltam:
SELECT ... DECODE(borrows.dateofcreation, NULL, 'SOHA', TO_CHAR(borrows.dateofcreation)) ... WHERE borrows.dateofcreation IS NULL OR borrows.dateofcreation > sysdate - 365


Drizzt
(nagyúr)
Blog

Köszi, tökéletes. ;)


Drótszamár
(őstag)

Sziasztok!

2 adatbázis (nem adattábla) között lehet valahogy adatokat cserélgetni.

Vagy csak itt a táblanevek helyett úgy kell hogy adatázis.táblanév ?


Jester01
(veterán)
Blog

Ez adatbáziskezelõtõl függ.


Drótszamár
(őstag)

linuxos mysql tud ilyet?


Drizzt
(nagyúr)
Blog

Ez alapján kéne még nekem lekérdezni a members.name-t is:
SELECT min(members.dateofbirth), videos.title
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title;

De nincs ötletem hogyan. Annyi biztos, hogy join kell, de hogyan?


Drótszamár
(őstag)

Szertinem ennnyi:

SELECT min(members.dateofbirth), videos.title , members.name
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title;


[Szerkesztve]


rdi
(veterán)
Blog

meg kő hozzá valami sql szerver is, nem?


Jester01
(veterán)
Blog

Mysql-re egyelõre csak ezt találtam: [link]


Drótszamár
(őstag)

Ezt most nem értem. :F

üzenetek