Frissítő lekérdezés

Frissítő lekérdezés
2011-09-24T17:14:13+02:00
2011-09-24T20:08:23+02:00
2022-11-23T04:00:44+01:00
magyargergo
A táblával nem csinál semmit ugyan úgy hagyja.
UPDATE jelentes1 SET pizza_nev = (SELECT pizza_nev FROM jelentes1 GROUP BY pizza_nev, feltete), feltetel = (SELECT feltetel FROM jelentes1 GROUP BY feltetel), darab01 = (SELECT Count(darab01) FROM jelentes1 GROUP BY feltetel)+"x", ar01 = (SELECT ar01 FROM jelentes1 GROUP BY ar01, feltetel), kedv01 = (SELECT kedv01 FROM jelentes1 GROUP BY kedv01, feltetel), ertek01 = (SELECT ar01 FROM jelentes1 GROUP BY ar01, feltetel)*(SELECT Count(darab01) FROM jelentes1 GROUP BY feltetel);
Mutasd a teljes hozzászólást!
Ha ezt szeretnéd, akkor miért írsz olyasmiket, hogy
feltétel szerint csoportosítsa
?

Te pizza név és feltétel szerint (meg valszeg ár és kedvezmény is bejátszik) szeretnéd csoportosítani, meg a kimenetnek is másnak kell lennie, mint amit leírtál.


select pizza_nev,feltetel,sum(db01) as db01, ar01, kedv01, sum(ertek01) as ertek01 from jelentes1 group by pizza_nev,feltetel,ar01, kedv01

Ha be akarod valahová szúrni, akkor jön az insert ... select ... és az id-t a beszúrás során generálod, ha egyáltalán szükség van az beszúrásra bárhová is.
Mutasd a teljes hozzászólást!

  • 1. Milyen db kezelőről van szó? mysql? oracle? stb.
    2. Nincs véletlenül vmilyen hibaüzenet?
    3. Biztos vagy te abban, hogy az egyes al-lekérdezések csak 1-1 rekordot adnak vissza? Mert ha nem, akkor nem fog működni a dolog! És szerintem több rekordot adnak vissza.


    Szerintem írd le, hogy mit is szeretnél csinálni és akkor tudunk segíteni. Nekem az az érzésem, hogy neked nem is update-re, hanem insert-re van szükség.
    Mutasd a teljes hozzászólást!
  • A jelentes1 táblában ilyen sorok vannak:
    id | pizza_nev | feltetel | db01| ar01 kedv01 ertek01 1 | 24cm, Ghost, Vékony | paradicsom24 | 1x | 100 | 0% | 100 2 | 24cm, Ghost, Vékony | paradicsom24 | 1x | 100 | 0% | 100 3 | 24cm, Ghost, Vékony | paradicsom24 | 1x | 100 | 0% | 100 4 | 24cm, Ghost, Vékony | trappista36 | 1x | 290 | 0% | 290 5 | 24cm, Ghost, Vékony | trappista36 | 1x | 290 | 0% | 290 6 | 24cm, Ghost, Vékony | trappista36 | 1x | 290 | 0% | 290
    Azt szeretném, hogy a feltétel szerint csoportosítsa, majd számolja össze, hogy hányat csoportosított. Az ertek01 = ar01*darab01(db01). (Sql)
    Mutasd a teljes hozzászólást!
  • Ehhez vagy sima lekérdezésre (select) lenne szükséged, vagy az eredményt egy másik táblába kéne beszúrnod (insert).

    select feltetel, count(*) as darab, sum(ertek01*ar01) as osszeg from jelentes1 group by feltetel

    Itt pedig megtalálod az insert ... select szintaxisát, ez alapján nem lehet gond a beszúrás elvégzése egy másik táblába. Azért másik táblába kell végezned a beszúrást, mert különben a beszúrt adatok is beleszólhatnának a lekérdezés eredményébe. Már ha mysql-t használsz, mert az ugye még mindig nem írtad le, hogy milyen db kezelőről van szó. De az összes db kezelő rendelkezik valami hasonló szerkezettel.

    Azt szeretném, hogy a feltétel szerint csoportosítsa


    Azt ugye tudod, hogy a nyitó hozzászólásban nem csak feltétel szerint csoportosítottál?
    Mutasd a teljes hozzászólást!
  • Persze tudom.
    Eredményként azt szeretném, hogy:
    id | pizza_nev | feltetel | db01| ar01 kedv01 ertek01 1 | 24cm, Ghost, Vékony | paradicsom24 | 3x | 100 | 0% | 300 2 | 24cm, Ghost, Vékony | trappista36 | 3x | 290 | 0% | 870
    Mutasd a teljes hozzászólást!
  • Ha ezt szeretnéd, akkor miért írsz olyasmiket, hogy
    feltétel szerint csoportosítsa
    ?

    Te pizza név és feltétel szerint (meg valszeg ár és kedvezmény is bejátszik) szeretnéd csoportosítani, meg a kimenetnek is másnak kell lennie, mint amit leírtál.


    select pizza_nev,feltetel,sum(db01) as db01, ar01, kedv01, sum(ertek01) as ertek01 from jelentes1 group by pizza_nev,feltetel,ar01, kedv01

    Ha be akarod valahová szúrni, akkor jön az insert ... select ... és az id-t a beszúrás során generálod, ha egyáltalán szükség van az beszúrásra bárhová is.
    Mutasd a teljes hozzászólást!
  • Azt miért írja, hogy Típuselérési hiba a feltételkifejezésben? Ez jó lesz, már csak ezt kell kideríteni, hogy miért csinálja.
    Mutasd a teljes hozzászólást!
  • db01 mezőben mi szerepel? 1 vagy 1x? Ha az utóbbi, akkor a sum előtt le kell vágni a végéről az x-et és számmá alakítani a mradék értéket, összeadni (sum) és a végén visszatenni az x-et.

    De még jobb lenne, ha a db01 mező eleve csak szám mező lenne.
    Mutasd a teljes hozzászólást!
  • Köszönöm!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd