Új hozzászólás Aktív témák
-
DopeBob
addikt
Sziasztok,
össze kéne kapcsolnom két lekérdezés eredményét, de van egy kis bökkenő. Valami olyasmi kellene, mint a transzponálás. Egy sorból + oszlopokat szúrok be egy másik lekérdezés végéhez. Plusz érdekesség. Itt x különféle kategória lehet, bármelyik kombinációban, ez esetleg az oszlopfejlécek miatt érdekes problémákat vet fel.
Meg lehet ezt oldalni kultúráltan?
MZ/X
-
DopeBob
addikt
válasz
martonx #2904 üzenetére
PL\SQL 11g
Igen, pivottal megcsináltam a lekérdezést amit egy másik táblához kéne kapcsolnom, de a join már nem megy.
Ugy nézne, ki hogy.
SELECT a, b FROM table1 t1
LEFT OUTER JOIN (select * from (select a, b, c from xx) pivot ( .. ) t2
ON a.t1 = a.t2Lefut, de nincs meg a tábla hozzákapcsolt része.
Külön futtatva a join allekérdezését működik rendesen.
*egy ötletem volt a * helyére felsorolom azt az 50 oszlopot az allekérdezésben van, de úgysem megy.
[ Szerkesztve ]
MZ/X
-
pittbaba
aktív tag
Sziasztok! Ritkán jövök egy egy brutál kérdéssel, hátha most is belöktök a jó irányba.
Weblap, termékek feltöltése. Minden kategóriának és alkategóriának saját custom paraméterei ami felvihető a termékhez (monitornál átmérő, autónál köbcenti stb).
Mivel végtelen nagy táblát kapnék, ezeket a custom adatokat külön táblákban tárolom.
Ezeket ki kell nyerjem, így egy kérés már 5mp.Így néz ki a lekérés:
SELECT SQL_CALC_FOUND_ROWS
`apro_ads`.id AS ad_id,
`apro_ads`.*,
`apro_users`.*,
`apro_cat_level1`.*,
`apro_cat_level2`.*,
`apro_cat_level2`.*,
`apro_ad_favorites`.advert_id AS is_favorite,
`apro_ad_favorites`.user_id AS favorite_user_id,
transactions.id AS trans_id,transactions.upgrade_type,transactions.auto_top,transactions.upgrade_duration,transactions.payment_status,transactions.payed_time,transactions.ad_showed
,customs_maganszemely.element_value,customs_kinal_keres_kiadna_berelne.element_value,customs_szobak_szama.element_value,customs_meret.element_value,customs_allapot.element_value,customs_futes.element_value,customs_emelet.element_value,customs_lift.element_value,customs_ingatlan_tipusa.element_value,customs_kilatas.element_value,customs_erkely.element_value,customs_butorozott.element_value,customs_parkolas.element_value,customs_energiatanusitvany.element_value
FROM apro_ads
JOIN `apro_users` ON apro_ads.owner_id = `apro_users`.id
LEFT JOIN `apro_cat_level1` ON apro_ads.cat_level1 = `apro_cat_level1`.id
LEFT JOIN `apro_cat_level2` ON apro_ads.cat_level2 = `apro_cat_level2`.id
LEFT JOIN `apro_cat_level3` ON apro_ads.cat_level3 = `apro_cat_level3`.id
LEFT JOIN `apro_ad_favorites` ON apro_ads.id = `apro_ad_favorites`.advert_id
LEFT JOIN (SELECT ad_id AS max_ad_id,MAX( id ) AS max_trans_id FROM `apro_transactions` GROUP BY max_ad_id) AS max_trans_id ON max_trans_id.max_ad_id = apro_ads.id
LEFT JOIN `apro_transactions` AS transactions ON (transactions.id = max_trans_id.max_trans_id)
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_maganszemely') AS customs_maganszemely ON `apro_ads`.id = customs_maganszemely.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_kinal_keres_kiadna_berelne') AS customs_kinal_keres_kiadna_berelne ON `apro_ads`.id = customs_kinal_keres_kiadna_berelne.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_szobak_szama') AS customs_szobak_szama ON `apro_ads`.id = customs_szobak_szama.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_meret') AS customs_meret ON `apro_ads`.id = customs_meret.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_allapot') AS customs_allapot ON `apro_ads`.id = customs_allapot.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_futes') AS customs_futes ON `apro_ads`.id = customs_futes.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_emelet') AS customs_emelet ON `apro_ads`.id = customs_emelet.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_lift') AS customs_lift ON `apro_ads`.id = customs_lift.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_ingatlan_tipusa') AS customs_ingatlan_tipusa ON `apro_ads`.id = customs_ingatlan_tipusa.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_kilatas') AS customs_kilatas ON `apro_ads`.id = customs_kilatas.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_erkely') AS customs_erkely ON `apro_ads`.id = customs_erkely.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_butorozott') AS customs_butorozott ON `apro_ads`.id = customs_butorozott.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_parkolas') AS customs_parkolas ON `apro_ads`.id = customs_parkolas.item_id
LEFT JOIN ( SELECT element_value, item_id FROM `apro_category_customs` WHERE element_name = 'customs_energiatanusitvany') AS customs_energiatanusitvany ON `apro_ads`.id = customs_energiatanusitvany.item_id
WHERE `apro_ads`.`cat_level1` = 2 AND `apro_ads`.`cat_level2` = 6 AND a_town ='Budapest' AND `customs_maganszemely`.`element_value` = '1' AND `customs_kinal_keres_kiadna_berelne`.`element_value` = '1' AND a_status='A'
AND transactions.payment_status = 'payed'
AND DATE_ADD(transactions.`payed_time`,INTERVAL transactions.`upgrade_duration` DAY) >= NOW()
AND a_status='A'
AND `apro_users`.status = 'A'
GROUP BY ad_id
ORDER BY transactions.ad_showed ASCCsatoltam egy explain kimenetet, hogy lássátok mi van indexelve.
[link][ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
bambano
titán
9-es postgresben kellene feltételes értéket visszaadni, a kérdés, hogy hogy illik ezt szépen?
ha a rekordban a status mező (char(1)):
- T,K,N, akkor akkor a rekordban tárolt másik mező tartalma legyen a végeredmény.
- S,D,V, akkor egy előre megadott string konstans
- ha B, akkor egy másik string konstans
- ha pedig a rekord egy másik mezője (boolean) hamis, akkor egy harmadik string konstans.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Agostino
addikt
sziasztok
adott egy komolyabb sql adatbázis. a lekérdezés rész stb ilyesmi teljesen oké. a gondom nekem az időveszteséggel van. lekérdezem az igényt, majd azt átforgatom excelbe, onnan grafikonokat gyártok stb. van olyan sql admin tool mostanság, ami ilyen jellegű beépített megoldásokkal rendelkezik?
hey friend listen, i know the world is scary right now but its gonna get way worse
-
martonx
veterán
válasz
Agostino #2913 üzenetére
Jelzem az Excel direktben le tud kérdezni adatbázisokból is, szóval ezt a lekérdezem majd átforgatom excelbe lépést illik tudni megspórolni.
És ha már direktben lekérdez, akkor semmi se tarthat vissza, hogy a lekérdezéseidre beállíts automatikusan frissülő diagram-okat, pivotokat, amit csak akarsz, és voilá.Én kérek elnézést!
-
martonx
veterán
válasz
Apollo17hu #2916 üzenetére
Ha nincs módja az excellel direktben lekérdezni az adatokat a DB-ből, akkor excel makróval se fogja azt tudni elérni. És ezen még a gugli se fog tudni segíteni neki
Én kérek elnézést!
-
bambano
titán
válasz
Agostino #2913 üzenetére
szerintem ehhez nem kell sql admin tool, a gépedre feltelepíted az adott adatbáziskezelőhöz szükséges odbc drivert, létrehozod az odbc kapcsolatot az adatbázissal, majd belerakod az sql lekérdezéseket egy excel táblába.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
zolynet
addikt
válasz
bambano #2919 üzenetére
b) megoldás, megkéri a céget hogy vegyen pár (sok) milliócskáért egy pl ibm cognos-t és annak a report studiójában gyönyörűen összepakolja ... persze előtte nem árt egy 3-5napos többszázezres tréningen is részt venni
na jó a tiéd gyorsabban megvalósítható
Life is too short to stay stock!
-
martonx
veterán
válasz
zolynet #2920 üzenetére
Vagy nekiállnak valamilyen BI rendszert használni. PL. a Microsoft Office-ban lévő Power BI mostanra egészen elképesztő tudású. És még sokba se kerül (relatíve persze), mert az Office árában benne foglaltatik a 2013-as verziótól kezdve. Persze egy ilyen önkiszolgáló BI használata előtt se árt egy pár százezres képzésen részt venni, hogy mégis eszik-e vagy isszák.
Én kérek elnézést!
-
-
Apollo17hu
őstag
Sziasztok!
Kifejezetten magyar lakcímek összehasonlítására tudna valaki kódot vagy kódkezdeményt adni?
Ez egész jó, de nem tudom, hogy szükséges-e adattisztítás pl. az ékezetek miatt. -
tm5
tag
válasz
Apollo17hu #2925 üzenetére
Hát az exact match-eket ugye elég hamar megkaphatod, de közelítő összehasonlítások már más tészta. Az IBM pl. nagyon nagy összegért adja bérbe cégeknek azt a szoftverét ami ezt csinálja. De még e fölött is általában működdik egy emberi csoport aki, egy bizonyos % fölött kézzel dönti el, hogy match, false positive vagy false negative az egyezés.
Valszeg valmilyen szintű közelítést össze lehet rakni, A kérdés az az, hogy a business mennyire tolerálja, hogy ha a hibás matchelés miatt nem érik el az ügyfelet.
Pl. Váci u. az Váci utca vagy Váci út? -
adamm.telki
újonc
Sziasztok!
Hogy tudok .database kiterjesztésű fájlt megnyitni, szerkeszteni?
Lehet nem jó helyen teszem fel a kérdésem.....
-
Louro
őstag
Sziasztok!
PL SQL-ben valahogy meg lehet nézni egy táblának, hogy az oszlopaira milyen szabály vonatkozik?
Gondolok itt arra, hogy
Oszlop1 varchar2(40)
Oszlop2 integer
Oszlop3 dateValami ilyesmi beépített funkció van rá?
Mess with the best / Die like the rest
-
lakisoft
veterán
-
tm5
tag
válasz
pittbaba #2907 üzenetére
Bár látom, hogy ez egy régi feladvány, de mivel nem láttam rá megoldást azért így utólag csak javasolnék valamit:
Szóval minden ami a apro_category_customs-ből jönne azt 1 subquery-be menne amire rékerülne egy PIVOT.
Ez egy Oracle-s példa rá.Ennek illene sokkal gyorsabbnak lennie és a query is szebb lenne.
-
DopeBob
addikt
Sziaszotok,
PL/SQL-ben hogy tudom egyszerűen kezelni, ha egy mezőbe több adatot vontak össze?
Kb Rendelésszám, sorszám, változatszám
Van egy ilyen: xxxx^x^x^xHogy tudom felbontani? Nem találok rá semmi beépített függvényt. Valami olyan kéne, hogy ez a mező, ez az elválasztó, melyik a 2. elem.
MZ/X
-
tm5
tag
válasz
DopeBob #2939 üzenetére
A neten találtam, valszeg más szeparátorral is működhet, csak nem vagyok magam nagyon otthon a regexp-es kifejezésekben:
select REGEXP_SUBSTR(s, '[^.]+', 1, 1) a,
REGEXP_SUBSTR(s, '[^.]+', 1, 2) b,
REGEXP_SUBSTR(s, '[^.]+', 1, 3) c,
REGEXP_SUBSTR(s, '[^.]+', 1, 4) d
from (select 'hello.how.are.you' s from dual)[ Szerkesztve ]
-
Louro
őstag
válasz
Apollo17hu #2941 üzenetére
+1 erre. Én is ezzel a kettővel darabolnék, ha van egyértelmű szeparátor. Ha pedig fix hosszúságúak az azonosítók, akkor még könnyebb a dolgod. Akkor csak SUBSTR() kell.
Mess with the best / Die like the rest
-
Petya25
addikt
Valami tipp arra hogy ha egy státus mező egy idősoros listán időnként állapotot vált, akkor a figyelt állapot előfordulások számát miként tudnám visszakapni?
Ugye nem csak meg kell számolnom a figyelt státust db-ra, hanem minden első előfordulást kellene számolnom.Ha a rekordokon a 'b'-t figyelem:
a a a b b b b a a a b a a a
akkor a várt eredmény 2Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
Ispy
veterán
válasz
Petya25 #2943 üzenetére
Esetleg egy függvény, ami ciklusban szépen végigmászik az értékeken, majd megszámolja. WHILE cikklus, ami egy SUBSTRING-gel végigmegy a mező tartalmán, ha változik az érték, akkor egyel növeled a számlálót.
Nem tudom mekkora tábláról van szó, azért az ilyen függvényekkel óvatosan kell bánni.
Most így hirtelen ennyi infóból ezt csinálnám, de lehet másnak van jobb ötlete.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
updog
senior tag
válasz
Petya25 #2943 üzenetére
Window (analytic) function-ök? (LAG pl.) Milyen SQL?
Pl. Oracle SQL-ben ennyi, innentől úgy hasonlítod az értékeket ahogy akarod
select id, val, lag(val, 1) over(order by id) as prev_val from t_tabla;
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
bambano
titán
válasz
Petya25 #2943 üzenetére
nem kötözködni akarok, de a pontos feladatmegfogalmazás sokat dobna a végeredményen
a fenti példában miért nem 4 a helyes végeredmény? van egy a->b átmenet, egy b->a átmenet, majd ugyanez mégegyszer.az eltolt soros joinolás, amit martonx kollégánk kiválóan bedobott, is 4-et adna eredményül.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
tm5
tag
Én is LAG-gal csinálnám amire még lenne téve egy CASE WHEN, hogy
CASE
WHEN val = LAG(val) OVER ... THEN 0
ELSE 1
END xez menne egy subqueryben és erre már csak egy SUM(x) kell.
Nagyon szépen működik a LAG, nekem a multkor a legutolsó értékváltozás dátumát kellett meghatározni és így csináltam.
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Asus ROG Strix Go BT
- Új Ulefone Armor 26 Ultra -120Watt -Ütés Víz és Por Álló Strapa Telefon -Ujjlenyomatos -Endoszkóp
- Philips 24M1N3200ZA Gaming 24" monitor
- Philips Evnia 49M2C8900 (49", OLED, 5120x1440, 240Hz, 10bit, Ívelt 1800R, 0,03ms) Új, Bontatlan!
- Laptopok, Pc-k professzionális karbantartása, tisztítása.
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen