Hirdetés
- Bambu Lab 3D nyomtatók
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Sok hűhó négyszázért: AMD Ryzen 7 9850X3D
- Új kezdeményezéssel pofoznák ki a Linuxot a játékosoknak
- Két 8 GB-os VGA-ra teszi fel ezt a negyedévet az NVIDIA?
- Milyen billentyűzetet vegyek?
- Milyen cserélhető objektíves gépet?
- Hisense LCD és LED TV-k
- Kezdő fotósok digitális fényképei
- Ilyet se látunk minden nap, már füstölt a GeForce, de a játék még futott
Új hozzászólás Aktív témák
-
nyunyu
félisten
Sokadik olvasatra sikerült megfejtenem, mit is akart jelenteni ez a sor:
AND rendeles_id NOT IN (SELECT IFNULL(rendeles_tmp,0) FROM user)Ha jól értem, amíg a felhasználó nyitott egy tranzakciót, akkor az user tábla rendeles_tmp oszlopba íródik be a félkész rendelés ID-je, és ott is marad, amíg be nem fejezi a vásárlást.
(Remélem egy másik "trigger" takarítja a szemetet utána!
Bár én azt nem triggerre bíznám, hanem explicite kiadnám a delete-et a program kódban.
Ha ilyenekre triggereket használtok, ott valami nagyon félrement az alkalmazás tervezésekor/implementálásakor.)Ekkor viszont a querym végére ezt egy WHERE-be kéne írni:
SELECT DISTINCT T1.rendeles_id
FROM rendeles AS T1
JOIN tetel AS T2
ON T1.rendeles_id=T2.rendeles_id
AND (T2.kuldes_id IS NULL
OR T2.szamla_id IS NULL)
WHERE T1.rendeles_id NOT IN (SELECT rendeles_tmp FROM user);IFNULL(rendeles_tmp,0): ezt meg eleve nem értem, miért kell a null értékeket nullára konvertálni?
Ki nem töltött érték/null az nem része a halmaznak (IN), de az ellenkezőjének sem (NOT IN).(Java programozóink szoktak vért izzadni, mert a DBben a null is értelmes érték.
Azt jelenti, hogy nincs adat.
) -
nyunyu
félisten
Juj.
Először sorbarendezted+csoportosítottad a tételeket rendeles_id szerint, azután az ablakozós függvény a csoportokra külön-külön képezett egy eredményt, aztán az eredményhalmazt még egyszer átfésülted a having után írt feltételekkel?
Nem lenne egyszerűbb egy sima joinnal eleve azokra a tételekre szűrni, ahol a kuldes_id vagy szamla_id null?
SELECT DISTINCT T1.rendeles_id
FROM rendeles AS T1
JOIN tetel AS T2
ON T1.rendeles_id=T2.rendeles_id
AND (T2.kuldes_id IS NULL
OR T2.szamla_id IS NULL);Distinctet csak azért tettem bele, hogy a több hiányos tétellel rendelkező rendelések csak egyszer szerepeljenek a listában, anélkül annyiszor kapnád vissza az azonosítóját, ahány tétele rossz.
Így csak egyszer fog végigmenni a táblákon *, majd az eredmény sorbarendezése után kihagyja a duplikációkat.
* vagy azon se, ha a tetel tablan van egy összetett index a rendeles_id, szamla_id, kuldes_id trióra.
Új hozzászólás Aktív témák
- Csípőből tolja Helix a konyhai melót
- Bambu Lab 3D nyomtatók
- iPhone topik
- WoW avagy World of Warcraft -=MMORPG=-
- Kerékpárosok, bringások ide!
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- OTP Bank topic
- Autós topik
- Sok hűhó négyszázért: AMD Ryzen 7 9850X3D
- Gumi és felni topik
- További aktív témák...
- 2 TB-os Samsung 980 PRO M.2 SSD with heatsink - garanciával
- Jura Impressa S90 Automata kávégép 6 hónap Garancia Beszámítás Házhozszállítás
- Fujitsu LIFEBOOK E449 i3-8130U 8GB 256GB 14" FHD 1 év garancia
- Lenovo Thunderbolt 3 kábel (4X90U90617)
- BESZÁMÍTÁS! MSI B650 R7 7800X3D 32GB DDR5 2TB SSD RTX 5070Ti 16GB Asus ROG Strix Helios GX601 750W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
)

