Hirdetés

2024. május 1., szerda

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)

Hozzászólások

(#1451) Lacces


Lacces
őstag

Hello,

1. Milyen webalkalmazáshoz érdemes a PostgreSQL-t használni? (én sok mindent olvastam, de eddig például az olyan webalkalmazás jutott eszembe, ahol egyszerre egyidejűleg több lekérés fut, mint előny mysql). Esetleg olyan, mint az amazon weboldal? Esetleg például a Neptun? :)

2. Találtam a neten shoprenter.hu, és elgondolkoztam a koncepción..., mint adatbázis. Webáruház bérlés, csak feltöltik termékekkel.
És a termékeknek, különböző tulajdonságaik vannak. Amelyek dinamikusan változnak.
Például: Kenyérnek - színe, íze, súlya van, Mobil telefonnak, meg legalább 30... és ezen gondolkoztam, hogy ezt hogyan lehetne a leghatékonyabban tárolni egy RDBMS-ben, hiszem minden egyes termékhez különböző mennyiségű "jellemzője" van. Főleg úgy, hogy például szeretném a termékeket majd szűrni bizonyos tulajdonság alapján

Nekem erre egy olyan tippem lenne, hogy vannak Product tábla, aztán van olyan tábla, hogy Labels (termék tulajdonságoknak). Product 1...n Labels kapcsolat van.
Product:
-id
-... (sok egyéb)
-labels
( ez egy olyan varchar lenne, ahol a label_id-k vanak tárolva, például ilyen formátumban: |1|34|45|54| ) - magyarul, minden egyes label_id | | között lenne.

Labels:
-label_id (címke típusa például: érintőképernyős telefonok id-ja, vagy 1 kilós kenyerek id-ja.)
-label_title ( címke típusa például: érintőképernyős telefonok szövege, vagy 1 kilós kenyér szövege)

Szerintetek ez lenne a legjobb megoldás, így lehetne a legkönnyebben megvalósítani RDBMS-ben?
Én legalább is így csinálnám.

[ Szerkesztve ]

(#1452) Sk8erPeter válasza Lacces (#1451) üzenetére


Sk8erPeter
nagyúr

"-labels ( ez egy olyan varchar lenne, ahol a label_id-k vanak tárolva, például ilyen formátumban: |1|34|45|54| ) - magyarul, minden egyes label_id | | között lenne."
Ha hatékony megoldást keresel, egyből le kéne, hogy essen, hogy ez aztán garantáltan nem lesz az. :)
Amúgy sem értem, minek kéne ilyen pipe-pal elválasztva tárolnod, amikor létrehozol neki egy külön táblát... :U A product id-val kéne összekapcsolnod, aztán kész.
Csak gondolj bele, hogy hogyan tudnál ezek között hatékonyan keresni, ha stringben egybe van b@szva... hatékonyan sehogy.

Sk8erPeter

(#1453) Lacces válasza Sk8erPeter (#1452) üzenetére


Lacces
őstag

Óóóóó :DDD kapcsoló tábla... hogy ez nem jutott eszembe itt... :W pedig még le is írtam, hogy 1...n kapcsolat...

(#1454) Sk8erPeter válasza Lacces (#1453) üzenetére


Sk8erPeter
nagyúr

Örülök, hogy leesett :DDD

Sk8erPeter

(#1455) martonx válasza Lacces (#1451) üzenetére


martonx
veterán

Ha kocka vagy a szó jó értelmében, akkor mindenhez PostgreSQL-t érdemes használni (már persze MySQL összehasonlításban, én egyébként MS SQL-re szavaznék a jelenlegi SQL felhozatalban).
Ha nem akarsz belemélyedni, csak annyit akarsz, hogy menjen, és az alapfunkciókat használod, akkor a MySQL elsőre szvsz jobban kézre áll.

Én kérek elnézést!

(#1456) Sk8erPeter válasza martonx (#1455) üzenetére


Sk8erPeter
nagyúr

"Ha kocka vagy a szó jó értelmében, akkor mindenhez PostgreSQL-t érdemes használni"
Miért?
(Most nehogy attól tarts, hogy én védelmezni kívánom bármelyik SQL-nyelvet, mert eszem ágában sincs, csak kíváncsi vagyok a szempontokra. :D)

[ Szerkesztve ]

Sk8erPeter

(#1457) martonx válasza Sk8erPeter (#1456) üzenetére


martonx
veterán

Mert a motorháztető alatt, illetve skálázhatóság (gondolok itt elsősorban a fürtőzésekre, azaz horizontális skálázhatóságra) szempontjából a PostgreSQL sokkal többet tud, sokkal finomabbra hangolható.
És ahogy mondtam, az már más kérdés, hogy a userek 99%-a ezeket a MySQL-hez képest extrának számító feature-öket az életben soha nem is fogja kihasználni.
Ellenpéldának meg ott van a Facebook, de ők már rég agyonhack-elték mind a PHP-t, mind a MySQL-t, és jó példák arra, hogy szarból is lehet várat építeni, ha erre több milliárd dollárod van.

Másrészt bevallom nem vagyok 100%-osan naprakész ez ügyben. Postgre-nal lemaradtam a 9-es főverziónál, MySQL-t érdemben utoljára 5.4-eset használtam. Szóval lehet, hogy közben MySQL lépett előre, bár magának az Oracle-nek sem érdeke, hogy igazi konkurenciát támasszon házon belül az Oracle DB-nek.

Én kérek elnézést!

(#1458) Sk8erPeter válasza martonx (#1457) üzenetére


Sk8erPeter
nagyúr

OK, köszi a választ! :) Még nincs tapasztalatom Postgre-val, kíváncsi vagyok rá.

Sk8erPeter

(#1459) lakisoft válasza martonx (#1457) üzenetére


lakisoft
veterán

A MySQL vs. Oracle összehasonlításnak nincs értelme. Nem ugyan arra a piacra készült így nem lehetnek egymás konkorensei. Sokat fejlődött a MySQL mióta az Oracle átvette a Sun-tól.
MSSQL vs. Oracle vs. PostgreSQL ennek az összehasonlításnak talán már több értelme lenne.

(#1460) martonx válasza lakisoft (#1459) üzenetére


martonx
veterán

Miért is nincs értelme az összehasonlításnak? Ráadásul nem is hasonlítottam össze, tényt közöltem, hogy az Oracle tudatosan tartja bután a MySQL-t. Persze fejlődget, de tudatosan hagyják ki belőle azokat a funkciókat, amitől horizontálisan jól skálázható, központilag könnyen üzemeltethető lenne (backup, mirror, stb...), adattárházként használható, azaz amitől a nagyvállalati szegmens számára vonzó lehetne.
Mivel a kolléga erre volt kíváncsi, illetve mások is kérdezték, hogy miben jobb a PostgreSQL. Pont a fentiekben jobb (minusz adattárház, mert az abban sincs igazán).
Ettől még nagyon is össze lehet hasonlítani mindent mindennel, pláne amikor DB platform választás előtt áll valaki.
Én is csak mellékesen jegyeztem meg, hogy én személy szerint nem választanék se MySQL-t, se PostgreSQL-t. Manapság egész jó ingyenes verziói vannak az Oracle db-nek, ennél többet tud az ingyenes MS SQL. Induláshoz ezek bőven elegek. Aztán, ha bejött a nagy üzlet, akkor el lehet gondolkodni ezek fizetős verzióin, illetve amit nagyon ajánlok az a felhő. Amazonws, azure, google felhője, már mindenkinek van felhő szolgáltatása, és szépen csökkengetnek az árak.

Én kérek elnézést!

(#1461) lakisoft válasza martonx (#1460) üzenetére


lakisoft
veterán

Nem tudom fejlesztőként vagy üzelemtetőként töltöd a munkaóráidat adatbázisok között?
Beépített függvényekben az Oracle sokkal szerteágazóbb, testreszabhatóbb, részletesebb megoldásokat kínál, míg az MSSQL ebből a szempontból sokkal elnagyoltabb. (Hozzátenném, hogy napi szinten fejlesztek MSSQL2008 alatt.) Pl.: Random függvény Oracle-ben és MSSQL-ben

Ui: Nagyon szeretek T-SQL-ben dolgozni, de tény hogy megvannak a maga korlátai. Ez Oracle-nél is így van de ott "komolyabb"* megoldásokkal lehet találkozni.

*A szakmai szememnek tetszőbb, szakma által jobban elfogadott, konvenció követőbb

[ Szerkesztve ]

(#1462) Lacces válasza martonx (#1460) üzenetére


Lacces
őstag

Na, ez már jobban tetszik, amit írsz.
OracleDB-nek az ingyenes része mennyire használható? Mennyire zabálja a hardvert? (Suliban valahányszor az Oracle adatbázishoz nyúltunk csak úgy ette a kliensek memóriáját). Ingyenes MS SQL-ben is gondolkoztam, de a linux integrációról nem olvastam semmi pozitívat.
De az ingyenes OracleDB-vel felkeltetted az érdeklődésemet! :)

(#1463) bpx válasza Lacces (#1462) üzenetére


bpx
őstag

hogy ette az adatbázis szerver a kliensek memóriáját?

egyébként az XE korlátai: 1 CPU, 1 GB memória, 11 GB felhasználói adat, tehát ennyire eszi

(#1464) Lacces válasza bpx (#1463) üzenetére


Lacces
őstag

Kliensekre volt felrakva, a db szerver...

Igen, ezt a leírást én is láttam, meg olyat is olvastam, hogy 1 gépen 1 adatbázis szerver legyen.
" and use one CPU on the host machine."

Csak az a gondom, hogy én szeretnék VPS-t bérelni, amin futna olyan 4-6 oldal lenne rajta, 1 mongodb és egy rdbms is.
1GB ram, 2magos cpu, 50GB-ra menne, és nem tudom mennyire bírná a szerver. Esetleg ilyen tapasztalatod van ezügyben?

(#1465) lakisoft válasza Lacces (#1464) üzenetére


lakisoft
veterán

VPS-re nem érdemes Oracle-t rakni, mert nem lesz valami sebes és elég drága lesz a VPS config ára hogy menjen egyáltalán az OracleDB. Lásd itt már kitárgyaltuk a témát.

(#1466) bpx válasza Lacces (#1464) üzenetére


bpx
őstag

"Kliensekre volt felrakva, a db szerver..."

jó, az iskolai (egyetemi) géppark nem a sebességéről híres :)

"Csak az a gondom, hogy én szeretnék VPS-t bérelni, amin futna olyan 4-6 oldal lenne rajta, 1 mongodb és egy rdbms is.
1GB ram, 2magos cpu, 50GB-ra menne, és nem tudom mennyire bírná a szerver. Esetleg ilyen tapasztalatod van ezügyben?"

ezügyben sajnos nincs
1 GB memória elég kevés, de ha ezek valami minimál oldalak, akkor elképzelhetőnek tartom, hogy elég lehet
kérdés, hogy erre tényleg kell-e neked Oracle, vagy elég valami pehelysúlyú rdbms

lakisoft: én nem emlékszem rá hogy ez így ki lett volna tárgyalva :)

(#1467) Lacces válasza bpx (#1466) üzenetére


Lacces
őstag

és lakisoft, köszi.

Akkor már csak annyi kérdésem lenne, hogy hogyan lehet tábla szerkezetet és adatokat egyik adatbázisból a másikba könnyen átvinni?
Elsősorban PostgreSQL-ből Oracle-be történő adat migráció érdekel. (csak az egyiknél lenne kérdéses... ha bevállik a weblap, akkor a többi weboldalhoz képest, rengeteg adat tárolódna és mozogna benne egy nap - vagy simán kudarc lesz :) )
De lehet akkor már lesz elég nyereség és felfogadok innen valakit a PH-ról, hogy oldja meg.
Csak nem akarom a kezdők hibáját elkövetni és már az elején elrontani.

A válaszokat meg már előre köszönöm :R

(#1468) lakisoft válasza Lacces (#1467) üzenetére


lakisoft
veterán

Ez az átvinni dolgot migrálásnak hívják és elég kemény tud lenni ha adatbázis specifikusra van megírva a szerkezet is. MySQL -> Oracle migráción dolgozom éppen és elég kemény dolgok adódnak néha. :).

Az adatbázis szerkezetétől, komplexitásától függ.

Tárolt eljárások lesznek? vagy egyéb logika lesz beépítve?

[ Szerkesztve ]

(#1469) Lacces válasza lakisoft (#1468) üzenetére


Lacces
őstag

Egyelőre nem lesz tárolt eljárás, egyéb logika sem szerintem. Igyekszem mindig a legegyszerűbb megoldást vállalni.
Tárolt eljárásnál egy kicsit hogy is mondjam még extrém kezdő vagyok, amikor még az ADO.NET-et tanultam akkor írkálgattam, de a könyv példái alapján nem éreztem úgy, hogy kell-e nekem tárolt eljárás.
Nem tudom, hogy mikor kéne használni, meló helyen sem láttam, itt anti tárolt eljárás szellemiség van, suli-ban még azt a kurzust nem vettem fel.
Egyelőre egyszerű lekérdezésekkel megtudtam ezt valósítani.
Migrálás lehet nem is lenne, végül is a postgresql sem látszik rossznak.

(#1470) Sk8erPeter válasza Lacces (#1469) üzenetére


Sk8erPeter
nagyúr

"suli-ban" sulitiltás? ;]
A tárolt eljárás pedig sokszor jó kis segítség tud lenni, például ASP.NET-ben. Amúgy a tárolt eljárás arra is jó, hogy nem kell a query-vel elrondítanod az alkalmazásod kódját, hanem az adatbázisban tartod azt, aminek épp ott a helye, vagy amit úgy érzel, nyugodtan rábízhatsz az adatbázisra, és azt terheled a feladat megoldásával, stb. Meg így adhatsz neki egy jó beszédes nevet, aztán meghívhatod az alkalmazásod kódjából a megfelelő paraméterek átadásával. Csomó mindent el lehet intézni benne, ami csúnya lenne alkalmazásból, vagy épp nem akarsz ORM-et igénybe venni rá, satöbbi.

Sk8erPeter

(#1471) Lacces válasza Sk8erPeter (#1470) üzenetére


Lacces
őstag

Az sulitiltás.
Jó, akkor majd ha olyan hobbi projektnél tartok, akkor majd jövők kérdezek a tárolt eljárásokról, ha úgy érzem. Igen, igen, már el is felejtettem, hogy saját nevet adhatok neki, nem rondítom el stb.
A programozás "művészete" - már el is felejtettem.

Köszönöm a választ mindenkinek! :R

[ Szerkesztve ]

(#1472) martonx válasza lakisoft (#1461) üzenetére


martonx
veterán

Fejlesztőként, de néha muszáj valamennyit üzemeltetnem is.
Abszolút nem szeretnék belemenni MS SQL, Oracle flame war-ba. Vannak olyan képességei az Oracle-nek, amikben valószínűleg jobb (a motorháztető alatt értem), de az általad írt példák éppen nem ilyenek, hanem tökéletesen szubjektív szintaktikai példák.

Én kérek elnézést!

(#1473) martonx válasza Lacces (#1464) üzenetére


martonx
veterán

na, ezt felejtsd el nagyon gyorsan. A NoSQL-ek jellemzően memóriában futnak, minél inkább ott tartják az adatbázisukat. Ezért is szokták javasolni, hogy NoSQL-t 64 bites oprendszerekre tegyünk, hogy bőven legyen alattuk memória. 1Gb memóriában fusson egy oprendszer, meg egy NoSQL és még erre akarsz rakni SQL szervert, meg web kiszolgálót is???
Ráadásul ha jól vettem ki a szavaidból a webkiszolgálást Java alapokon tervezed, ami alá a webszerverek nem éppen a karcsú memória igényeikről híresek. Ez így nagy bukta lesz.

Én kérek elnézést!

(#1474) martonx válasza Lacces (#1469) üzenetére


martonx
veterán

"itt anti tárolt eljárás szellemiség van" - szóval gányoltok, vagy annyira kicsiben játszotok.
Mondok egy gyors példát, hogy mikor jó a tárolt eljárás és egyáltalán nem csak ASP.NET-nél ;]
Egy táblába be kell szúrnod egy adatot, más táblák adainak függvényében.
Ezt megoldhatod úgy, hogy fogod, lekéred az adatokat 3-4 táblából a webszerverre, majd kódban megvizsgálgatod őket, ezek alapján összeraksz egy insert-et, és beszúrod az adatokat. Ez így mondjuk 4-5 DB-hez nyúlást jelent, mindig felépíted/feléleszted a kapcsolatot, az adatok jönnek mennek feleslegesen, kezeled a kivételeket stb...

Ehelyett írhatsz egy tárolt eljárást, amivel SQL DB-n belül tudod megoldani ugyanezt. Egy adatbázis hívással, nulla felesleges adatmozgással.

Én kérek elnézést!

(#1475) lakisoft válasza martonx (#1472) üzenetére


lakisoft
veterán

Nem akarok és sem háborúzni. Nem az ACÉL. Feel good mester.!!! :R :R :R

(#1476) Lacces válasza martonx (#1473) üzenetére


Lacces
őstag

Lehet, nem tudom, épp ezért kérdeztem, hogy mekkora jó. Én laptopon futatom a linux + java webszervert (Jetty - baromi jó, gyors és keveset eszik ajánlom mindenkinek) + mongot + (jelenleg mysql), de összeségében még nem láttam őket együtt 1GB ram felé menni

Bár úgy vettem észre, hogy nincs nagy különbség Windows Server 2008 + IIS + mongo + mssql ,és a fentebb említett java-s megoldás között hardver zabálásban.

Te így kezdetnek mennyi memóriát mondanál? (mongo + postgresql esetleg egy Win-es megoldásnál?)

(#1477) lakisoft válasza Lacces (#1476) üzenetére


lakisoft
veterán

Terhelés alatt is nézted?

(#1478) martonx válasza Lacces (#1476) üzenetére


martonx
veterán

No, de mind a NoSQL, mind a hagyományos SQL-ek, annyi cuccot tartanak memóriában, amennyit csak tudnak, vagy amennyit kell.
Tehát ha most a teszt db-idben mind a 10 táblában van 10-10 sor adat, így persze, hogy egyik sql sem foglal sok memóriát. Csakhogy ez éppen semmit nem jelent, mert ha mind a 10 táblában lesz táblánként 200.000 adat, és ezeket másodpercenként 10-szer lekéri a webszerver, akkor mindjárt más lesz a leányzó fekvése.
Plusz a webszerver terhelése is gondolom nulla. Majd ha párhuzamosan 10-20 kérést fog kiszolgálni, és mindegyikre indít 1-1 VM-et, a maga 30-40 Mbyte-jával, akkor fogsz te nagyot nézni, és azt mondani, hogy pedig még a laptop-omon is milyen pöpecül futott minden, míg egymagam fejlesztgettem.
Nem véletlen, hogy kereskedelmi java hosting szinte sehol sincs (bár ennek szvsz másik oka a milliónyi java-s nyelvjárás is), ellentétben a PHP-s, ASP.NET-es hosting cégekkel, amikkel Dunát lehetne rekeszteni.

Én kérek elnézést!

(#1479) Lacces válasza lakisoft (#1477) üzenetére


Lacces
őstag

Igaz, nem néztem úgy nagy terhelés alatt laptopon :). Csak cégesnél láttam.

martonx, köszi a tapasztalatodat és a válaszod. Jó hogy mondtad, hogy minden db szereti a memóriát, igen, ez kiment a fejemből. Már sejtem, hogy fogom én ezt csinálni ;)

(#1480) lakisoft válasza Lacces (#1479) üzenetére


lakisoft
veterán

Sok szerencsét. :R

(#1481) Inv1sus


Inv1sus
addikt

Sziasztok!

Ideiglenes értékek alapján lehetséges rendezni egy táblát?

Részletesebben:
Vannak termékeim. Ezeknek mind van egy normál ára, illetve némelyik termék lehet akciós (10%, -1000 FT stb). Szeretném ár szerint rendezni, de úgy, hogy a kiszámolt kedvezményes ár alapján. Lehetséges ezt valahogy kivitelezni?

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1482) Apollo17hu válasza Inv1sus (#1481) üzenetére


Apollo17hu
őstag

szerintem ez működne:

SELECT t.normal_ar, t.normal_ar * 0.9
FROM tabla t
ORDER BY 2

(#1483) Petya25 válasza Inv1sus (#1481) üzenetére


Petya25
addikt

select cikk, ár, akció, ár+akció from tábla
order by ár+akció

A + lehet - vagy / vagy * is, attól függ milyen korrekciót használsz.
Erre gondoltál?

Antonio Coimbra de la Coronilla y Azevedo, bizony!

(#1484) Inv1sus


Inv1sus
addikt

Valószínűleg igen. Köszönöm nektek, holnap reggel kipróbálom.

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1485) Inv1sus válasza Inv1sus (#1484) üzenetére


Inv1sus
addikt

Na, a 'holnapból' több nap lett sajnos. :(

Most neki akartam állni de rájöttem, hogy nem fog menni. Mint írtam, többféle kedvezmény lehet és mindegyiket máshogy kellene kiszámolni:
10%, 1000

Hogy mondom meg, hogy azt a 10%-ot úgy számolja, hogy azt majd át kell alakítania 0.9-re és szoroznia az összeggel, 1000-nél meg, hogy kivonja azt?

[ Szerkesztve ]

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1486) Inv1sus válasza Inv1sus (#1485) üzenetére


Inv1sus
addikt

úgy döntöttem, hogy csinálok külön egy oszlopot minden terméknek, ahova a kiszámolt árat rakom.

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1487) fordfairlane válasza Inv1sus (#1485) üzenetére


fordfairlane
veterán

Vagy tárolt eljárással, vagy olyan adatszerkezettel, amelyik egyértelműen írja le, hogy a kedvezményt hogyan kell számolni. Így egy SELECT case szerkezettel tudsz kedvezményt kalkulálni, majd erre rendezni.

x gon' give it to ya

(#1488) Apollo17hu válasza Inv1sus (#1486) üzenetére


Apollo17hu
őstag

Ahogy fordfairlane is írta, a CASE WHEN ... THEN ... END szerkezet a megoldás a problémádra, ha nem akarsz külön oszlopot erre fenntartani.

(#1489) sztanozs válasza Inv1sus (#1485) üzenetére


sztanozs
veterán

Ne adj egyszerre több típusú kedvezményt - általában egyébként sem összevonhatók a kedvezmények (vagy ha van több féle, akkor ne keverd őket, hanem számold ki melyik ár az alacsonyabb és jelenítsd meg azt).

Amúgy :
SELECT ..., Vetelar, (Vetelar - Engedmeny) * (1 - Kedvezmeny) AS KedvezmenyesAr, ...

Ahol:
Vetelar - az eredeti vételár pl. 30 000
Engedmeny - a termék (vagy terméktípus) engedménye, pl 1 000
Kedvezmeny - a termékre (terméktípusra) adott kedvezmény pl. 10% (0.1)
KedvezemenyesAr - a végső ár az összes levonással együtt...

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1490) Inv1sus


Inv1sus
addikt

Hú, nehéz szülés volt, de sikerült, hála nektek :B . Egy kicsit én is félreérthető voltam. A nyertes query:

(CASE
WHEN discounts.discount LIKE '' THEN products.price
WHEN discounts.discount > 100 THEN products.price - discounts.discount
WHEN discounts.discount < 100 THEN products.price * ((100 - discounts.discount)/100)
ELSE products.price
END) as active_price

Szóval az volt a lényeg, hogy egyszerre egy termékre csak egy kedvezmény elérhető, de az többféle lehet. :U

Köszi mégegyszer :R

[ Szerkesztve ]

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1491) sztanozs válasza Inv1sus (#1490) üzenetére


sztanozs
veterán

Ez tök jó, amíg mondjuk forintot használsz (de mondjuk euróban egy 10 EUR is elég nagy kedvezmény tud lenni). Én ha egy változóban tárolnám akkor monjuk a negatívok lennének a levonandók, a pozitívak a százalékok - csakhogy véletlen se kelljen keveredniük.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#1492) Apollo17hu válasza Inv1sus (#1490) üzenetére


Apollo17hu
őstag

A discounts táblában fel kéne venned mégegy mezőt, ami a kedvezmény típusát jelölné (százalékos, konkrét érték stb.), így a discounts.discount értékét nem kellene figyelned. A CASE WHEN utasításban pedig a kedvezmény típusát jelölő mező értékét vizsgálnád. (Ez alapján lenne szorzás/osztás vagy összeadás/kivonás vagy egyéb művelet.)

(#1493) Inv1sus válasza Apollo17hu (#1492) üzenetére


Inv1sus
addikt

Megcsináltam. Így sztanozs által felvetett probléma is meg lett oldva. Köszi! :R

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1494) Jeti1


Jeti1
tag

Hogy tudnám megoldani egyszerűen és kényelmesen azt, hogy ütemezetten fájlokat töltsön fel az SQL szerverem egy FTP tárhelyre? Én az Integration Services-nek az FTP Taskjára gondoltam, mint megoldás. Szükségem lesz az Integration Services-en belül másra is? Az FTP Task ütemezhető? Nem foglalkoztam még ezzel a témával és most se öltem még bele sok időt, de gondoltam érdeklődök mielőtt próbálkoznék, tesztelgetnék.

Ne várjunk a nevetéssel, amíg boldogok leszünk. Különben félő: meghalunk anélkül, hogy nevettünk volna. /La Bruyére/

(#1495) lakisoft válasza Jeti1 (#1494) üzenetére


lakisoft
veterán

Agent-re lehet még szükséged (job létrehozás stb stb.). Úgy látom MS SQL Servert használsz. Melyik verziót?

(#1496) Jeti1 válasza lakisoft (#1495) üzenetére


Jeti1
tag

Jelen esetben SQL Server 2008 R2. Egyébként SQL Server 2000-től SQL Server 2008 R2-ig vagyok kénytelen foglalkozni az SQL Serverekkel. Várhatóan bővül a sor nemsokára az SQL Server 2012-vel.

Akkor, ha jól értem, csak szimplán Integration Services-ben FTP Task-ot használok, aztán azt ütemezem Management Studióban Job-bal. Mondjuk nem tudom, hogy FTP Task-kal egyszerre több fájlt is lehet-e küldeni vagy ahhoz trükközni kell, de ma utána nézek ennek.

Ne várjunk a nevetéssel, amíg boldogok leszünk. Különben félő: meghalunk anélkül, hogy nevettünk volna. /La Bruyére/

(#1497) Inv1sus


Inv1sus
addikt

Visszatértem ;]

Egy újabb problémába futottam bele, de valószínűleg ez lesz most már az utolsó.
Tehát:

Van egy adott termék. Ez a termék lehetséges, hogy egyszerre több kategóriában is szerepel, mint pl. "Ragasztók" és "Ragasztók és tömítők".
A kategóriákat '|' jellel elválasztva rakom be az adatbázisba, tehát ez a termék felvéve így néz ki a 'category_url' oszlopon belül:
"Ragasztók|Ragasztók és tömítők"

A honlapon egy menüpontra kattintva jelenleg így olvasom ki a termékeket pl:
WHERE products.category_url LIKE '%Ragasztók%'

Ezzel az a probléma, hogy ha a termék csak a "Ragasztók és tömítők" kategóriában szerepel, a "Ragasztók" kategóriában ugyanúgy meg fog jelenni, mivel megfelel a fenti feltételnek. Ha viszont ezt használom:
WHERE products.category_url LIKE 'Ragasztók'
Akkor meg csak azokat fogja mutatni, amik pontosan a 'Ragasztók' nevű kategóriával rendelkeznek.

Én ez utóbbit preferálnám (tehát wildcard nélkül, hogy pontosak legyenek a találatok), de ehhez szét kellene valahogy szednem a mezőben megadott kategóriákat (amik jelenleg így néznek ki néha "Ragasztók|Ragasztók és tömítők").

Ebben még tudtok segíteni? :F

[ Szerkesztve ]

*** WEBDESIGN, GRAFIKUS DESIGN, FRONT-END PROGRAMOZÁS ***

(#1498) fordfairlane válasza Inv1sus (#1497) üzenetére


fordfairlane
veterán

kategorizálás (taggelés) témában ajánlok egy jó blogpostot:

[link]

x gon' give it to ya

(#1499) Sk8erPeter válasza Inv1sus (#1497) üzenetére


Sk8erPeter
nagyúr

"A kategóriákat '|' jellel elválasztva rakom be az adatbázisba"
Ez az, amit kerülj el, válaszd szét rendesen. Sok sort fog eredményezni, de az nem baj. Annyi sor lesz, ahány taget/terméket/akármit akarsz hozzákapcsolni az adott entitáshoz.

Leegyszerűsítve:

termékek tábla
-----------------------
id ; termék neve; kategóriák
123 ; én termékem ; kategória1|kategória765

HELYETT

termékek tábla
-----------------------
id ; termék neve
123; én termékem

kategóriák tábla
-----------------------
id; kategória neve
1; kategória1
765; kategória765

termékek-kategóriák összekapcsoló tábla
-------------------------------
id; termék_id; kategória_id
1; 123; 1
2; 123; 765

Sk8erPeter

(#1500) martonx válasza Inv1sus (#1497) üzenetére


martonx
veterán

"A kategóriákat '|' jellel elválasztva" - eddig olvastam...

Én kérek elnézést!

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.