- Milyen TV-t vegyek?
- Sony MILC fényképezőgépcsalád
- Milyen billentyűzetet vegyek?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Hobby elektronika
- Apple MacBook
- Továbbfejlődött a Keychron egéralternatívája a Logitech MX Masterre
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen egeret válasszak?
- Azonnali VGA-s kérdések órája
Ú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
- E-roller topik
- Itthon is kapható lesz a kerámia Xiaomi Band 10
- Kerékpárosok, bringások ide!
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Milyen TV-t vegyek?
- PlayStation 5
- Bevonják az AI-t az atomreaktorok építésébe
- Sony MILC fényképezőgépcsalád
- Milyen billentyűzetet vegyek?
- bambano: Bambanő háza tája
- További aktív témák...
- Apple Watch Series 8 GPS + Cellular (E-SIM), alumínium, 45 mm
- Lenovo Legion gamer laptop szép állapotban (RTX 3060, Ryzen 5 5600H)
- Asus Tuf Gamer Laptop i7, GTX 1660 Ti, 24GB RAM!
- HP EliteBook 850 G3, 15,6" FHD, I7-6600 CPU, 16GB DDR4, 256GB SSD, AMD VGA, WIN 11, ( olvasd végig )
- Dell Latitude 5580, 15,6" FHD IPS , I5-6300UCPU, 8GB DDR4, 256GB SSD, WIN 11, ( olvasd végig )
- Bomba ár! Dell Latitude 7390 2in1 - i7-8G I 16GB I 256SSD I 13,3"FHD Touch I HDMI I Cam I W11 I Gar
- AKCIÓ! MSI B450M R5 5600X 32GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Zalman 600W
- AKCIÓ! Lenovo Thinkpad T14 Gen 3 üzleti notebook - i5 1245U 16GB RAM 512GB SSD Intel Iris XeW11
- ÁRGARANCIA!Épített KomPhone Ryzen 9 5900X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 5600X 32GB DDR4 512GB SSD RTX 3060 XC 12GB Rampage SHIVA 600W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest