Ú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
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Kertészet, mezőgazdaság topik
- Villanyszerelés
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Bittorrent topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Trollok komolyan
- Hosszú premier előzetest kapott az Arknights: Endfield
- Milyen légkondit a lakásba?
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- Intel Core Ultra 7 265KF RX9060XT minőségi PC teljes garancia
- Apple iPhone 16 Pro 128GB 94%-os akku
- Lenovo X1 Yoga gen. 6. // i7-1185g7 // 32GB // 512GB // ÚJSZERŰ!!! // ÚJ ÁRA 1.408.990.-Ft!!!!!!
- Lenovo ThinkPad W541,15.6,FHD,i7-4810MQ,32GB DDR3,256GB SSD,K1100 2GB VGA,WIN10
- Samsung Galaxy Tab S10 Ultra 5G 12/256 2028.09.03-ig garancia
- Telefon felvásárlás!! Samsung Galaxy S25, Samsung Galaxy S25 Plus, Samsung Galaxy S25 Ultra
- Telefon felvásárlás! Samsung Galaxy A15, Samsung Galaxy A25, Samsung Galaxy A35, Samsung Galaxy A55
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Gainward RTX 5080 // Felbontott, új // SZÁMLA // GARANCIA //
- Asus 18 ROG WUXGA IPS 165Hz G-Sync i7-13650HX 14mag 16GB 1TB Nvidia RTX 4060 8GB 140W Win11 Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
)