Tema: Re: MySQL uzklausa
Autorius: taikaika
Data: 2011-08-09 16:40:45
va as panasia minti turejau is pradziu, tik norejau apsieiti be papildomos 
celes lentoj, o viska padaryti on the fly, taciau ten kazkas nesigavo, tai 
nusprendziau ieskoti atsakymo toliau, nes norejosi tiketi, kad yra 
paprastesnis budas:)

kreipiausi i kita forumjuka, tai atsakymas atrodo taip paprastai, kad net 
juokas sujame :D bet, kaip sako, tobula tai, kas paprasta :D

kam idomu:

SELECT i2.order_id
FROM order_items i1
    RIGHT OUTER JOIN order_items i2
        ON i2.item_id = i1.item_id
        AND i2.quantity = i1.quantity
        AND i1.order_id = X
WHERE i2.order_id  != X
GROUP BY i2.order_id
HAVING COUNT(i1.order_id) = COUNT(*)
   AND COUNT(i1.order_id) = (SELECT COUNT(*) FROM order_items WHERE order_id 
= X)



"Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message 
news:j1r8lh$o9l$1@trimpas.omnitel.net...
> Sveiks,
>
>    Siaip senai su MySQL dirbes, daugiau su MSSQL, tai net idomu kaip 
> atsakys kazkas i si klausima, nes uzduotis sudetinga :) neaisku ar cia 
> galutinis poreikis, nes gal eitu kazkaip kitaip tai padaryti.
>
> Jeigu man butu toks poreikis traukineti tokias analogijas, eiciau 
> lengviausiu keliu, t.y. sukuriant papildoma lauka orders lentoje, arba jei 
> to retai reikia sukurti nauja lenta su:
>
> TblOrdersInfo
> ---
> id,
> order_id,
> order_hash varchar(1024)    <- jei irasu daug tai nekenktu ji ir indeksuot
>
> Zodziu esme naujame lauke: order_hash varchar(1024)  si hash lauka tektu 
> pildyti sukurus uzsakyma su prekemis arba redaguojant si uzsakyma - 
> pakeiciant jam priklausancias prekes, tai galetu buti kazkokia funkcija 
> tiesiog. Esme tame lauke rasai taip:
>
> [prekesId]:[kiekis].[prekesId]:[kiekis].[prekesId]:[kiekis].[prekesId]:[kiekis].ir 
> t.t...
>
> Labai svarbu kad prekiuID butu surusiuoti formuojant sia eilute, pvz 
> visada nuo maziausio iki didziausio. tada gautum unikalia kiekvienam 
> uzsakymui eilute su ju prekiu id ir kiekiais, pvz.:
>
> 112:10.1355:5.55:5. ir t.t... aka: 
> Preke_A_id:preke_A_kiekis.preke_B_id:prekeBKiekis.
>
> Turint tokia informacija laisvai issitrauktum ka nori ar visus tokius pat 
> uzsakymus su tokiu pat komplektu prekiu nes tikslus prekiu komplektas butu 
> surasytas vienoje eiluteje:
>
> SELECT *
> FROM
>    orders
> WHERE
>        order_hash = atitinkamo order naujo lauko reiksme
> And  id != orderio kurio nereik id
>
> Jei tai viena uzklausa istraukt reik tai tada butu pvz.:
>
> SELECT *
> FROM
>    orders o
> WHERE
>        order_hash in (Select order_hash from orders where id = 
> !orderio_id!)
> And id != !orderio_id!
>
> Tiesa pavyzdzius rasiau MSSQL sintakse, bet kazkas panasaus turetu buti 
> MySQL
>
> O uzsakymams tada tektu sukurt kazkokia funkcija, nezinau kuo ten 
> programuoji, php ar kuo kitu ar tiesiog procedura kuri istraukia kiekvieno 
> uzsakymo visas prekes surusiavus prekiu_id ASC ir craftina is ju 
> atitinkamo formato string'a ir ji iraso prie uzsakymu ar papildomos 
> lentos, ziurint kaip darysi. tada i funkcijas kurie kuria ar keicia 
> uzsakymus tektu ideti sios funkcijos kvietima.
>
> Manau kitu atveju uzsiknisi, o toks dalykas tai palengvintu, jei to reikia 
> retai tai geriau det atskiroje lentoje.
>
> JDM.
>
>
>
>
> "taikaika" <aaaaaa@bbbb.lt> wrote in message 
> news:j1p0gg$8av$1@trimpas.omnitel.net...
>> labas,
>>
>> turiu 2 lenteles:
>> 1. orders (id)
>> 2. order_items (id, order_id, item_id(prekes id is kitos lentos), 
>> quantity)
>>
>> tarkim turiu uzsakyma X, kuris turi prekes A -1 vnt, B - 2 vnt, C - 1 vnt
>>
>> man reiketu surasti is visos orders lentos tuos uzsakymus, kurie turi tas
>> pacias prekes ir toki pati ju skaiciu, aisku, praleidziant uzsakyma X.
>>
>> patarkit, prasau, kaip iveikt sia uzduoti :)
>>
>> 


3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser