- Fórumok
- Szoftverfejlesztés
- SQL kérdések
- (kiemelt téma)
- iPhone topik
- Yettel topik
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Thunder Pro néven jöhet az új HMD mobil
- Samsung Galaxy A57 - kecses test, lusta lélek
- Milyen okostelefont vegyek?
- Android szakmai topik
- Samsung Galaxy S25 - végre van kicsi!
- Képernyőmentes aktivitáskövetőt mutatott be a Google, ez a Fitbit Air
- Google Pixel topik
-
2300 - 2201
6041 - 6001 6000 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
chabeee
aktív tag
Előbb fel kell venni a másik táblában a sz oszlopot ami lehetőleg elsődleges kulcs is legyen.

igen az megvolt

-
Sk8erPeter
nagyúr
Csak szép csendben kérdezem meg miért is nem lehet azt az aposztrófot másra cserélni, és akkor a kecske is jóllakik, meg a káposzta is megmarad. Azaz a cégnévben benne lesz az aposztróf, az adatbázisban meg nem:
$szoveg = str_replace("\'","'",$szoveg);
aztán jöhet egyéb védelem is. Persze lehet én értelek félre benneteket...Eleve nem kellene, hogy gondot okozzon az, hogy valaki aposztrófot tölt fel. Más egyebet nem tok elmondani, kérem kapcsolja ki.

-
Akcept
tag
Hinnnye, de fárasztó vagy.
Ezeket az agymenéseket miért nem rakod inkább OFF-ba?
Jójó, legyen igazad, rohadjon meg a júzer, és ne akarjon feltölteni aposztrófot tartalmazó stringet, hát mégis mi az anyját képzel??
A cégneve tartalmaz aposztrófot? Kapja be, menjen szépen a Cégbíróságra, változtassa meg! HÁNEHOGYMÁHE!"az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet"
Mi van, emba'?
Valóban sok az összefüggés az NSA és az aposztrófok között, olyannyira, hogy csak a "biztonságérzet" szó használata miatt nyilván tök indokolt volt ilyen moslékot idekeverni.
Mondjuk most pont tök szórakoztató ilyeneket olvasgatni, amikor valaki túlheveskedi a kommentjeit, de valószínűleg kicsit más hangulatban írjuk épp a hsz.-einket. 
Csak szép csendben kérdezem meg miért is nem lehet azt az aposztrófot másra cserélni, és akkor a kecske is jóllakik, meg a káposzta is megmarad. Azaz a cégnévben benne lesz az aposztróf, az adatbázisban meg nem:
$szoveg = str_replace("\'","'",$szoveg);
aztán jöhet egyéb védelem is. Persze lehet én értelek félre benneteket... -
PumpkinSeed
addikt
-
chabeee
aktív tag
JAJ, igaz, meglátszik még, hogy most kezdtem

kösziakkor a forign key-es sor igazából csak magát a hivatkozást csinálja meg, magát a columnot nem. ezt nem tudtam, köszi
-
jocomen
aktív tag
Sziasztok,
MySQL-t szeretnék használni és abban létrehozni egy táblát, ami tartalmaz egy másik táblára mutató idegen kulcsot. Így szeretném létrehozni:
"CREATE TABLE KONYVEK"+
" (ISBN INT,"+
"konyv_id INT PRIMARY KEY NOT NULL,"+
"cim CHAR(50),"+
"szerzo CHAR(50),"+
"FOREIGN KEY(user_id) REFERENCES FELHASZNALOK(user_id),"+
"allapot INT,"+
"kiadas_eve INT)";Viszont a Foreign key-es sorra exception-t kapok, és nem értem, miért, eddig ahol utána néztem mindenhol így írják.
hiba:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Key column 'user_id' doesn't exist in tablepedig létezik,
előre is köszi
KONYVEK táblában is csináltál `user_id` oszlopot ?
Kód alapján nekem úgy tűnik, h csak a megszorítást (FK) adtad hozzá, de előtte nem hoztad létre a `user_id` oszlopot a KONYVEK táblában. Így a megszorítás egy nem létező oszlopra mutat.
-
chabeee
aktív tag
Sziasztok,
MySQL-t szeretnék használni és abban létrehozni egy táblát, ami tartalmaz egy másik táblára mutató idegen kulcsot. Így szeretném létrehozni:
"CREATE TABLE KONYVEK"+
" (ISBN INT,"+
"konyv_id INT PRIMARY KEY NOT NULL,"+
"cim CHAR(50),"+
"szerzo CHAR(50),"+
"FOREIGN KEY(user_id) REFERENCES FELHASZNALOK(user_id),"+
"allapot INT,"+
"kiadas_eve INT)";Viszont a Foreign key-es sorra exception-t kapok, és nem értem, miért, eddig ahol utána néztem mindenhol így írják.
hiba:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Key column 'user_id' doesn't exist in tablepedig létezik,
előre is köszi
-
jocomen
aktív tag
-
bpx
őstag
-
jocomen
aktív tag
-
bpx
őstag
-
jocomen
aktív tag
mysql-ben ha egy oszlop adattípusát módosítom boolean-ra, miért nem marad úgy, miért vált vissza tinyint-re, amit soha nem adtam meg neki ??
kapcsolatokat szintén nem hajlandó berajzolni: néha megy, néha nem ... tkm ki van vele
Ennyire bugos a xampp? -
PumpkinSeed
addikt
Azért, mert alapértelmezett esetben a TO_CHAR dátum bemenet esetén a lehetséges leghosszabb kimenetre készülve rak paddinget (extra space-ek), ezért amikor a te 'THURSDAY'-t vársz, ott valójában 'THURSDAY '-t kapsz, mert a 'WEDNESDAY' a leghosszabb, és minden napot 9 karakterre egészít ki emiatt.
Ha ezt nem szeretnéd, akkor a 'DAY' helyett használj 'FMDAY'-t, amiben az FM kikapcsolja a paddinget.
Ezen kívül:
- az UPPER felesleges, mert a 'DAY' miatt eleve nagybetűsen kapod az eredmény ('day' - kisbetű)
- ha a TO_CHAR-t a megfelelő NLS paraméterrel kiegészíted, akkor rögtön magyarul kapod a napot
- az INITCAP függvénnyel lehet a szavak kezdőbetűjét nagybetűre cserélni, ha ez az igényPl:
SQL> SELECT INITCAP(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'FMDAY', 'NLS_DATE_LANGUAGE = HUNGARIAN')) AS VALAMI FROM DUAL;
VALAMI
------------
CsütörtökKöszönöm a segítséget

-
bpx
őstag
SELECT
case UPPER(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'DAY')) WHEN 'THURSDAY' THEN 'CSÜTÖRTÖK'
WHEN 'MONDAY' THEN 'HÉTFŐ'
else 'Vasárnap' END AS Valami
from dual;Valamiért mindig az ELSE ág hajtódik végre holott Csütörtököt kellene mondjon.
Azért, mert alapértelmezett esetben a TO_CHAR dátum bemenet esetén a lehetséges leghosszabb kimenetre készülve rak paddinget (extra space-ek), ezért amikor a te 'THURSDAY'-t vársz, ott valójában 'THURSDAY '-t kapsz, mert a 'WEDNESDAY' a leghosszabb, és minden napot 9 karakterre egészít ki emiatt.
Ha ezt nem szeretnéd, akkor a 'DAY' helyett használj 'FMDAY'-t, amiben az FM kikapcsolja a paddinget.
Ezen kívül:
- az UPPER felesleges, mert a 'DAY' miatt eleve nagybetűsen kapod az eredmény ('day' - kisbetű)
- ha a TO_CHAR-t a megfelelő NLS paraméterrel kiegészíted, akkor rögtön magyarul kapod a napot
- az INITCAP függvénnyel lehet a szavak kezdőbetűjét nagybetűre cserélni, ha ez az igényPl:
SQL> SELECT INITCAP(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'FMDAY', 'NLS_DATE_LANGUAGE = HUNGARIAN')) AS VALAMI FROM DUAL;
VALAMI
------------
Csütörtök -
PumpkinSeed
addikt
SELECT
case UPPER(TO_CHAR(TO_DATE('1994-01-06','YYYY-MM-DD'),'DAY')) WHEN 'THURSDAY' THEN 'CSÜTÖRTÖK'
WHEN 'MONDAY' THEN 'HÉTFŐ'
else 'Vasárnap' END AS Valami
from dual;Valamiért mindig az ELSE ág hajtódik végre holott Csütörtököt kellene mondjon.
-
PumpkinSeed
addikt
Köszönöm a segítségeteket.

-
Sk8erPeter
nagyúr
Köszönöm megint.
Igen azt tudom, hogy mire jó.
De,CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;itt ez a kód de, hogy lehet ezzel műveletet végezni? Mert ez most lefut 99999^2x de semmit nem csinál. Miképpen lehet ezt valami insert into utasítás mellé tenni?

Például beillesztésnél tudod felhasználni a szekvenciát.
Vegyünk egy nagyon egyszerű példát: van egy supplier nevű táblád (az általad létrehozott supplier_seq alapján), első mezője egy int id, ami primary key is egyben. Másik mezője legyen a példa kedvéért egy name mező, nvarchar2(50) típussal.
Feltöltesz valami újat, pl.:insert into supplier
values (supplier_seq.nextval, 'blabla');A lényeg tehát a supplier_seq.nextval, ezzel tudod kivenni a szekvencia soron következő értékét.
-
Ablakos
addikt
Köszönöm megint.
Igen azt tudom, hogy mire jó.
De,CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;itt ez a kód de, hogy lehet ezzel műveletet végezni? Mert ez most lefut 99999^2x de semmit nem csinál. Miképpen lehet ezt valami insert into utasítás mellé tenni?

Mi az hogy lefut? Létrehoztál egy sequencia objektumot. Ha létrehozol egy táblát az sem "fut le".
Hivatkozhatsz a pseudooszlopaira nextval vagy curval-lal.
tehát: select supplier_seq.nextval from dual; A sequencia következő elemét adja. Kiválóan alkalmazható egy unique key megszorítással ellátott oszlopot egyedi azonosítóval ellátni. -
bpx
őstag
Köszönöm megint.
Igen azt tudom, hogy mire jó.
De,CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;itt ez a kód de, hogy lehet ezzel műveletet végezni? Mert ez most lefut 99999^2x de semmit nem csinál. Miképpen lehet ezt valami insert into utasítás mellé tenni?

első találat
-
PumpkinSeed
addikt
Sémákkal tudsz adatbázisokat / adatbázis részeklet elkülöníteni. Olyan ez, mint programozásban a namespace.
Sequence: már a nevében benne van, hogy mi ez, és mire jó. Nem fogod kitalálni, egy folyamatosan növekvő számláló. Hogy mire jó azt a képzeletedre bízom, pl. adatbázis sorokat azonosítani.
Köszönöm megint.
Igen azt tudom, hogy mire jó.
De,CREATE SEQUENCE supplier_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;itt ez a kód de, hogy lehet ezzel műveletet végezni? Mert ez most lefut 99999^2x de semmit nem csinál. Miképpen lehet ezt valami insert into utasítás mellé tenni?

-
martonx
veterán
Újabb Oracle SQL-el kérdés, vagyis kettő.
Az egyik a sémákhoz kapcsolódik. Nem értem, hogy mik is ezek hol is használják, és miért. Azt olvastam róla, hogy lehet séma szinte minden sql objektum, de hogyan is, meg miként is?
Illetve, a másik a szekvenciákkal. Ha létrehozok egy szekvenciát a CREATE SEQUENCE utasítással akkor azt azután hogyan tudom használni?
Sémákkal tudsz adatbázisokat / adatbázis részeklet elkülöníteni. Olyan ez, mint programozásban a namespace.
Sequence: már a nevében benne van, hogy mi ez, és mire jó. Nem fogod kitalálni, egy folyamatosan növekvő számláló. Hogy mire jó azt a képzeletedre bízom, pl. adatbázis sorokat azonosítani.
-
Sk8erPeter
nagyúr
"nem szükséges helyettem megfogalmazgatni bármit is": rendben, akkor maradjon a te megfogalmazásod, ami egyébként helytelen.
"miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna": nem értem. aposztróftól nem merül fel, hogy sql injection lehetne? de, felmerül. ettől egy teljesen független kérdés, hogy az adatbáziskapcsolatod kezelése védve van-e az sql injection ellen vagy sem. ha nem ellenőrzöd az inputot ilyen ellen, akkor lemondasz a védelem egy lehetséges szintjéről.
szerk: az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet.
Hinnnye, de fárasztó vagy.
Ezeket az agymenéseket miért nem rakod inkább OFF-ba?
Jójó, legyen igazad, rohadjon meg a júzer, és ne akarjon feltölteni aposztrófot tartalmazó stringet, hát mégis mi az anyját képzel??
A cégneve tartalmaz aposztrófot? Kapja be, menjen szépen a Cégbíróságra, változtassa meg! HÁNEHOGYMÁHE!"az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet"
Mi van, emba'?
Valóban sok az összefüggés az NSA és az aposztrófok között, olyannyira, hogy csak a "biztonságérzet" szó használata miatt nyilván tök indokolt volt ilyen moslékot idekeverni.
Mondjuk most pont tök szórakoztató ilyeneket olvasgatni, amikor valaki túlheveskedi a kommentjeit, de valószínűleg kicsit más hangulatban írjuk épp a hsz.-einket. 
-
bambano
titán
Köszönöm, nem szükséges helyettem megfogalmazgatni bármit is, magamtól is megy, meg úgy látom, így is sikerült pár perccel később felfognod.

Szerintem meg nem, nem természetes, hogy tiltod az aposztrófot egy cégnévben, ahogy az sem, hogy miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna, ha normálisan prepared statementeket használsz, de nekem mindegy.
"nem szükséges helyettem megfogalmazgatni bármit is": rendben, akkor maradjon a te megfogalmazásod, ami egyébként helytelen.
"miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna": nem értem. aposztróftól nem merül fel, hogy sql injection lehetne? de, felmerül. ettől egy teljesen független kérdés, hogy az adatbáziskapcsolatod kezelése védve van-e az sql injection ellen vagy sem. ha nem ellenőrzöd az inputot ilyen ellen, akkor lemondasz a védelem egy lehetséges szintjéről.
szerk: az elképzelés, hogy nem foglalkozom az inputtal, mert a prepared statement elvileg véd az sql injection ellen, hamis biztonságérzetet ad. pláne egy olyan korszakban, amikor crontabból küldik a heti snowden dokumentet.
-
PumpkinSeed
addikt
Újabb Oracle SQL-el kérdés, vagyis kettő.
Az egyik a sémákhoz kapcsolódik. Nem értem, hogy mik is ezek hol is használják, és miért. Azt olvastam róla, hogy lehet séma szinte minden sql objektum, de hogyan is, meg miként is?
Illetve, a másik a szekvenciákkal. Ha létrehozok egy szekvenciát a CREATE SEQUENCE utasítással akkor azt azután hogyan tudom használni?
-
Sk8erPeter
nagyúr
no, akkor megfogalmazom helyetted: azt gondolod, hogy azért félek az sql injectionra alkalmas karakterektől, mert a program többi része nincs ellene felkészítve.
"AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...": igen, azért tiltom, de ez, szerintem, természetes.
Köszönöm, nem szükséges helyettem megfogalmazgatni bármit is, magamtól is megy, meg úgy látom, így is sikerült pár perccel később felfognod.

Szerintem meg nem, nem természetes, hogy tiltod az aposztrófot egy cégnévben, ahogy az sem, hogy miért merül fel egyáltalán a para, hogy ez SQL Injectiont okozhatna, ha normálisan prepared statementeket használsz, de nekem mindegy.
-
bambano
titán
Azt írtad, "Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user.", ebből arra lehetne következtetni, hogy nálad a felhasználótól érkező aposztróf már alkalmas lehet SQL Injectionre, amitől tartani kell, tehát jobb, ha már az alkalmazásban kiszedjük, mielőtt feltöltenénk adatbázisba.
De én is csak szúrkálódom, nem kell ám mindent komolyan venni. 
Igaz, az összefüggést a két dolog közt még mindig nem értem, hogy AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...

no, akkor megfogalmazom helyetted: azt gondolod, hogy azért félek az sql injectionra alkalmas karakterektől, mert a program többi része nincs ellene felkészítve.
"AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...": igen, azért tiltom, de ez, szerintem, természetes.
-
bambano
titán
Azt írtad, "Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user.", ebből arra lehetne következtetni, hogy nálad a felhasználótól érkező aposztróf már alkalmas lehet SQL Injectionre, amitől tartani kell, tehát jobb, ha már az alkalmazásban kiszedjük, mielőtt feltöltenénk adatbázisba.
De én is csak szúrkálódom, nem kell ám mindent komolyan venni. 
Igaz, az összefüggést a két dolog közt még mindig nem értem, hogy AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...

attól, hogy a zseton páncélban van, még bezárom az ajtót

mondjuk az is igaz, hogy a program, amit írtam, nem széles körnek szól, de legalább kényes adatok vannak benne...
-
Sk8erPeter
nagyúr
Azt írtad, "Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user.", ebből arra lehetne következtetni, hogy nálad a felhasználótól érkező aposztróf már alkalmas lehet SQL Injectionre, amitől tartani kell, tehát jobb, ha már az alkalmazásban kiszedjük, mielőtt feltöltenénk adatbázisba.
De én is csak szúrkálódom, nem kell ám mindent komolyan venni. 
Igaz, az összefüggést a két dolog közt még mindig nem értem, hogy AZÉRT tiltod az aposztróf bevitelét, mert alkalmas lehetne SQL Injectionre...

-
bambano
titán
jó, tudom, te az "a" betűre is hibát dobsz
![;]](//cdn.rios.hu/dl/s/v1.gif)
Komolyra fordítva amúgy valahol eléggé el van cseszve a megközelítésed, ha egy felhasználótól érkező aposztróf miatt paráznod kell az SQL Injectiontől...

ezt a mondatodat nem teljesen értem. nem parázok az sql injectiontól, egyszerűen kitiltottam a lehetőségét is.
-
Sk8erPeter
nagyúr
-
bambano
titán
Eleve rossz a megközelítésed, ilyet SOHA nem csinálunk, nem konkatenálunk query-t változókkal, prepared statementeket használunk, ahogy a PHP topicban neked már vagy hússzor leírtuk, és a probléma meg van oldva.
(#2266) bambano :
Őő, hát azért az aposztróf vagy épp idézőjel karakter talán nem egy olyan extra karakter, ami miatt hibát kéne dobni a felhasználónak... lásd épp az említett példát.puhány vagy

-
Sk8erPeter
nagyúr
Más jellegű kérdés. Számít az valahol is, hogy az SQL query-ben mikor használok \"$valtozo\"-t, vagy '$valtozo'-t vagy simán $valtozo-t, netán '".$valtozo."'-t? Úgy vettem észre, hogy többféleképpen is működik, szóval nem tudom, hogy melyik a helyes...vagy teljesen mindegy ez? Működjön, és kész?
Eleve rossz a megközelítésed, ilyet SOHA nem csinálunk, nem konkatenálunk query-t változókkal, prepared statementeket használunk, ahogy a PHP topicban neked már vagy hússzor leírtuk, és a probléma meg van oldva.
(#2266) bambano :
Őő, hát azért az aposztróf vagy épp idézőjel karakter talán nem egy olyan extra karakter, ami miatt hibát kéne dobni a felhasználónak... lásd épp az említett példát. -
csabyka666
veterán
Más jellegű kérdés. Számít az valahol is, hogy az SQL query-ben mikor használok \"$valtozo\"-t, vagy '$valtozo'-t vagy simán $valtozo-t, netán '".$valtozo."'-t? Úgy vettem észre, hogy többféleképpen is működik, szóval nem tudom, hogy melyik a helyes...vagy teljesen mindegy ez? Működjön, és kész?
-
csabyka666
veterán
Ezt is el tudom fogadni, de esetemben például egy áruház nevét kell felvinni, és pl. a G'Roby nevében van aposztróf, és bár anélkül is meglennénk, nehogy ezen akadjon fenn az user, hát valahogy bele kellett vennem...
-
bambano
titán
Üdv ismét!
SQL injection ellen mi (vagy mik) a legjobb függvények? Ezt találtam: mysql_real_escape_string(), és kérdeznélek benneteket, hogy ez elegendő, vagy küldjek rá még másik függvényeket is?
(Nem OOP a projekt, hanem az alap mysql_* függvényeket használom.)Más: eddig ha ' (aposztróf) karakter szerepelt a beszúrt mezőben, akkor mindig hibát dobott az SQL. Most, hogy lekezeltem minden beviteli mezőt mysql_real_escape_string() függvénnyel, már bekerülnek az '-os stringek is az adatbázisba. Ez így rendben van, vagy ezzel nyitottam egy biztonsági rést?
Én egyáltalán nem hagyom, hogy sql injectionra alkalmas karaktert bevigyen az user. Ellenőrizni szoktam, hogy a bevitt adatban van-e ilyen karakter, és ha igen, hibát dobok. Legyen meg pontosvessző meg aposztróf nélkül.
-
csabyka666
veterán
Ez php függvény nem SQL: mysql_real_escape_string()
Jogos, azt nem mondtam, hogy PHP-ben kellene megoldanom. Irány a PHP topic...
-
PumpkinSeed
addikt
Üdv ismét!
SQL injection ellen mi (vagy mik) a legjobb függvények? Ezt találtam: mysql_real_escape_string(), és kérdeznélek benneteket, hogy ez elegendő, vagy küldjek rá még másik függvényeket is?
(Nem OOP a projekt, hanem az alap mysql_* függvényeket használom.)Más: eddig ha ' (aposztróf) karakter szerepelt a beszúrt mezőben, akkor mindig hibát dobott az SQL. Most, hogy lekezeltem minden beviteli mezőt mysql_real_escape_string() függvénnyel, már bekerülnek az '-os stringek is az adatbázisba. Ez így rendben van, vagy ezzel nyitottam egy biztonsági rést?
Ez php függvény nem SQL: mysql_real_escape_string()
-
csabyka666
veterán
Üdv ismét!
SQL injection ellen mi (vagy mik) a legjobb függvények? Ezt találtam: mysql_real_escape_string(), és kérdeznélek benneteket, hogy ez elegendő, vagy küldjek rá még másik függvényeket is?
(Nem OOP a projekt, hanem az alap mysql_* függvényeket használom.)Más: eddig ha ' (aposztróf) karakter szerepelt a beszúrt mezőben, akkor mindig hibát dobott az SQL. Most, hogy lekezeltem minden beviteli mezőt mysql_real_escape_string() függvénnyel, már bekerülnek az '-os stringek is az adatbázisba. Ez így rendben van, vagy ezzel nyitottam egy biztonsági rést?
-
csabyka666
veterán
Akkor jó hírem van: jól csináltad. Az adatbázis pedig azért nem engedi a már emlegetett parancsokat mert a kulcskapcsolat az üres táblákra is érvényes. Például kitörölnéd a felhasznalok táblát, akkor mit vinnél fel a kapcsolati táblába. Egyébként ebben az egyszerű példában, ha először a kapcsolati táblát törlöd, akkor megszűnnek a kulcskapcsolatok, így törölhető / kiüríthető lesz a többi is.

Igen, a törlés működik így, egy bizonyos sorrendben, de az ürítés akkor sem. Most már azt mondom: érthető okokból.

-
DNReNTi
őstag
Igen igen, nekem is ez van. Több-a-többhöz kapcsolat, és ugye van egy (azaz, hogy több is van) kapcsolótábla, amibe beleraktam az elsődleges kulcsokat, illetve a kapcsolat tulajdonságait.

Akkor jó hírem van: jól csináltad. Az adatbázis pedig azért nem engedi a már emlegetett parancsokat mert a kulcskapcsolat az üres táblákra is érvényes. Például kitörölnéd a felhasznalok táblát, akkor mit vinnél fel a kapcsolati táblába. Egyébként ebben az egyszerű példában, ha először a kapcsolati táblát törlöd, akkor megszűnnek a kulcskapcsolatok, így törölhető / kiüríthető lesz a többi is.

-
csabyka666
veterán
azt gondoltam, hogy én állítottam be valamit rosszul
Megint azt tudom írni, attól függ mi a cél.
Külső kulcsot akkor használsz amikor egy másik tábla elsődleges kulcsára akarsz mutatni, ez egy szigorú megszorítás, az adatbázis csak meglévő értéket enged ide felvinni. Jó példa mondjuk egy bármilyen (1:1, 1:n, n:m) kapcsolati tábla. A legegyszerűbb példa hogy érthető legyen:
3 táblád van: felhasznalok, hozzaferes_szintek, felhasznalok_hozzaferese.
Itt a kapcsolati tábla a felhasznalok_hozzaferese összesen két mezővel: felhasznalo_id és hozzaferes_szint_id, mindkettő külső kulcs. Ez tipikus, egyszerű esete a külső kulcs használatának, hogy visszatérjek az eredeti gondolathoz, ha ilyesmire használod, akkor jól használod.
Igen igen, nekem is ez van. Több-a-többhöz kapcsolat, és ugye van egy (azaz, hogy több is van) kapcsolótábla, amibe beleraktam az elsődleges kulcsokat, illetve a kapcsolat tulajdonságait.

-
DNReNTi
őstag
Igazából nem fontos, hogy nullázni tudjam, csak tesztelés fázisban vagyok az oldallal, aztán azt gondoltam, hogy én állítottam be valamit rosszul, és azért nem engedi törölni. Főleg azért gondoltam, hogy én szúrtam el, mert teljesen üres táblákon sem működik, de ezek szerint nem ott van a gond, hanem egyszerűen az adatbázis nem fogja sohasem engedni.
Marad a törlés, és újra létrehozás. Azzal nullázódnak az indexek, és végülis az a cél...
azt gondoltam, hogy én állítottam be valamit rosszul
Megint azt tudom írni, attól függ mi a cél.
Külső kulcsot akkor használsz amikor egy másik tábla elsődleges kulcsára akarsz mutatni, ez egy szigorú megszorítás, az adatbázis csak meglévő értéket enged ide felvinni. Jó példa mondjuk egy bármilyen (1:1, 1:n, n:m) kapcsolati tábla. A legegyszerűbb példa hogy érthető legyen:
3 táblád van: felhasznalok, hozzaferes_szintek, felhasznalok_hozzaferese.
Itt a kapcsolati tábla a felhasznalok_hozzaferese összesen két mezővel: felhasznalo_id és hozzaferes_szint_id, mindkettő külső kulcs. Ez tipikus, egyszerű esete a külső kulcs használatának, hogy visszatérjek az eredeti gondolathoz, ha ilyesmire használod, akkor jól használod.
-
csabyka666
veterán
Na, én ilyen szinten nem tudom a dolgokat.

-
csabyka666
veterán
Nem is egészen értem pontosan mi is a cél. Jobban mondva a célt értem, csak azt nem miért van rá szükség. Egyébként egy tipp: én minden táblában használok egy "active" nevű mezőt. Ez mindig az utolsó, boolean, default: 1. Minden lekérdezésben szerepel a WHERE active = 1; tehát ha "törölni" akarok egyszerűen csak inaktiválom azt a rekordot, és az "megszűnik" létezni az oldal számára. Lehet csak az én hülyeségem, de szerintem adatbázisból törlést kerülni kell amennyire lehet. Hozzáteszem: éles oldalaknál, amíg tesztelsz és telehányod sallanggal az adatbázist akkor persze érdemes legyalulni. Erre pedig a tökéletes módszer ha exportálod csak a struktúrát, eldobod az összes táblát, majd importálod a struktúrát. Lehet van erre szebb megoldás, ha van, engem is érdekel.
Igazából nem fontos, hogy nullázni tudjam, csak tesztelés fázisban vagyok az oldallal, aztán azt gondoltam, hogy én állítottam be valamit rosszul, és azért nem engedi törölni. Főleg azért gondoltam, hogy én szúrtam el, mert teljesen üres táblákon sem működik, de ezek szerint nem ott van a gond, hanem egyszerűen az adatbázis nem fogja sohasem engedni.
Marad a törlés, és újra létrehozás. Azzal nullázódnak az indexek, és végülis az a cél...
-
jocomen
aktív tag
Próbáltam mindenféle sorrendben, sehogy sem engedi. Marad a favágó módszer, vagy pedig DROP-olom a táblákat, és létrehozom újra.
Lehet, h többgyerekes?
Közvetett hivatkozás?Ha a kapcsolat kiiktatásával törölsz, és nem minden táblát, azaz valamelyikben marad hivatkozás, akkor ha visszarakod a kapcsolatot, szerintem azért is hibát dob. Nem vagyok biztos, h ilyenkor nullázódik a kulcs.
-
DNReNTi
őstag
Magyarán a DROP, DELETE, TRUNCATE az nem csak nekem, hanem még a proknak sem engedélyezett?

MOD: ...éles adatbázisban természetesen.
Nem is egészen értem pontosan mi is a cél. Jobban mondva a célt értem, csak azt nem miért van rá szükség. Egyébként egy tipp: én minden táblában használok egy "active" nevű mezőt. Ez mindig az utolsó, boolean, default: 1. Minden lekérdezésben szerepel a WHERE active = 1; tehát ha "törölni" akarok egyszerűen csak inaktiválom azt a rekordot, és az "megszűnik" létezni az oldal számára. Lehet csak az én hülyeségem, de szerintem adatbázisból törlést kerülni kell amennyire lehet. Hozzáteszem: éles oldalaknál, amíg tesztelsz és telehányod sallanggal az adatbázist akkor persze érdemes legyalulni. Erre pedig a tökéletes módszer ha exportálod csak a struktúrát, eldobod az összes táblát, majd importálod a struktúrát. Lehet van erre szebb megoldás, ha van, engem is érdekel.
-
csabyka666
veterán
Próbáltam mindenféle sorrendben, sehogy sem engedi. Marad a favágó módszer, vagy pedig DROP-olom a táblákat, és létrehozom újra.
-
jocomen
aktív tag
Üdv mindenkinek!
Szeretném üríteni a tábláimat, hogy az indexek visszaálljanak nullára, és teljesen üresek legyenek a táblák.
Szerintem nektek már ismerős lesz, ezt kapom: #1701 - Cannot truncate a table referenced in a foreign key constraint [...]
A táblákat úgy hoztam létre, hogy minden "FOREIGN KEY" után odaírtam az "ON DELETE CASCADE ON UPDATE CASCADE"-t, de ezzel sem javult a helyzet. Olvastam, hogy ha a "FOREIGN_KEY_CHECKS = 0"-t beállítjuk, majd ürítjük a táblát, és visszaállítjuk a "FOREIGN_KEY_CHECKS"-t, akkor működik az ürítés, de ez gondolom a favágó módszer...szóval nincs valami egyszerűbb megoldás?Ha újra kell tervezni hozzá az adatbázist, akkor tárgytalan, mert lehet, hogy sohasem fogom használni az ürítést, vagy ha mégis használom, akkor minden táblát ürítek, szóval akkor már inkább DROP-olom, és létrehozom újra...
Lehet félreértem a problémát, de ez nem az, h nem törölhetsz a szülőtáblából, amíg a gyerektáblában van rá hivatkozás? Azaz fordított sorrendben tudod törölni.
Ha fontos, h nullázódjon az id, akkor én kiíratnám scriptbe, és azzal hoznám létre újra az adatbázist.
-
csabyka666
veterán
A DROP sem működik ha kulcskapcsolatok vannak a táblák között. A FOREIGN_KEY_CHECKS ki (és be) kapcsolása működő módszer, ha favágó ha nem, de én csak teszteléskor használom, pl ha ki kell nullázzak egy adatbázist, vagy csak néhány táblát. Nem véletlen nem működik se a DROP, se a DELETE se a TRUNCATE, így ezt egy éles oldalon felejtsd el.
Kulcskapcsolatok okkal vannak egy adatbázisban.Magyarán a DROP, DELETE, TRUNCATE az nem csak nekem, hanem még a proknak sem engedélyezett?

MOD: ...éles adatbázisban természetesen.
-
DNReNTi
őstag
Üdv mindenkinek!
Szeretném üríteni a tábláimat, hogy az indexek visszaálljanak nullára, és teljesen üresek legyenek a táblák.
Szerintem nektek már ismerős lesz, ezt kapom: #1701 - Cannot truncate a table referenced in a foreign key constraint [...]
A táblákat úgy hoztam létre, hogy minden "FOREIGN KEY" után odaírtam az "ON DELETE CASCADE ON UPDATE CASCADE"-t, de ezzel sem javult a helyzet. Olvastam, hogy ha a "FOREIGN_KEY_CHECKS = 0"-t beállítjuk, majd ürítjük a táblát, és visszaállítjuk a "FOREIGN_KEY_CHECKS"-t, akkor működik az ürítés, de ez gondolom a favágó módszer...szóval nincs valami egyszerűbb megoldás?Ha újra kell tervezni hozzá az adatbázist, akkor tárgytalan, mert lehet, hogy sohasem fogom használni az ürítést, vagy ha mégis használom, akkor minden táblát ürítek, szóval akkor már inkább DROP-olom, és létrehozom újra...
A DROP sem működik ha kulcskapcsolatok vannak a táblák között. A FOREIGN_KEY_CHECKS ki (és be) kapcsolása működő módszer, ha favágó ha nem, de én csak teszteléskor használom, pl ha ki kell nullázzak egy adatbázist, vagy csak néhány táblát. Nem véletlen nem működik se a DROP, se a DELETE se a TRUNCATE, így ezt egy éles oldalon felejtsd el.
Kulcskapcsolatok okkal vannak egy adatbázisban. -
csabyka666
veterán
Üdv mindenkinek!
Szeretném üríteni a tábláimat, hogy az indexek visszaálljanak nullára, és teljesen üresek legyenek a táblák.
Szerintem nektek már ismerős lesz, ezt kapom: #1701 - Cannot truncate a table referenced in a foreign key constraint [...]
A táblákat úgy hoztam létre, hogy minden "FOREIGN KEY" után odaírtam az "ON DELETE CASCADE ON UPDATE CASCADE"-t, de ezzel sem javult a helyzet. Olvastam, hogy ha a "FOREIGN_KEY_CHECKS = 0"-t beállítjuk, majd ürítjük a táblát, és visszaállítjuk a "FOREIGN_KEY_CHECKS"-t, akkor működik az ürítés, de ez gondolom a favágó módszer...szóval nincs valami egyszerűbb megoldás?Ha újra kell tervezni hozzá az adatbázist, akkor tárgytalan, mert lehet, hogy sohasem fogom használni az ürítést, vagy ha mégis használom, akkor minden táblát ürítek, szóval akkor már inkább DROP-olom, és létrehozom újra...
-
zolynet
veterán
2012express futtatok 4gb rammal e8400 procival, tökéletesen fut
nincs agyonterhelve
... tesztelni tökéletes 
-
PumpkinSeed
addikt
Van két adathalmazod. Az egyik SQL táblában, a másik meg egy szöveg fileban mondjuk vesszővel elválasztva.
Mit teszel, ha a kettő közös metszetét kellene meghatároznod?
Persze elkezdheted mindkettőt lekérni, majd memóriában for-okkal összeforgatni, és ifekkel ellenőrizni.
Vagy fogod, feltöltöd a csv-det egy ilyen external táblába, és egy szimpla sql select-el megkapod a közös halmazt.
Kapisgálod, hogy mire jó ez?Igen így érthető, köszönöm, csak nem találtam megfelelő leírást hozzá.

(#2241) Ablakos
Gondolom.

-
V.Stryker
nagyúr
Bőven jó ez a 2012-höz is

Microsoft® SQL Server® 2012 Express
ENU\x64\SQLEXPRADV_x64_ENU.exe ezt töltsd el és majd telepítésnél kiválasztod, hogy mi kell, ebben benne van alapból a Management Studio is.
Köszi.
Igazából egy beléptető rendszer (Seawing) programját akarom feltenni, hogy gyakorlatozzak rajta, de az egész adatbázisa ezen alapszik. Én meg ehhez h.lye vagyok és majd jövök jó kis kérdésekkel. 
martonx:

-
martonx
veterán
A hardver igény nem azon múlik, hogy milyen SQL-t raksz rá, hanem hogy paraméterezed. Az Express eleve csak maximum 1 processzor magot és 1Gb memóriát használ.
-
DopeBob
addikt
Bőven jó ez a 2012-höz is

Microsoft® SQL Server® 2012 Express
ENU\x64\SQLEXPRADV_x64_ENU.exe ezt töltsd el és majd telepítésnél kiválasztod, hogy mi kell, ebben benne van alapból a Management Studio is.
-
V.Stryker
nagyúr
Hát mivel egy 4 giga ramos E5700 -el rendelkező gépre kell, ezért igen, jó lenne régi, aminek kicsi a hardverigénye.
Aha, ez megvan....innen mind kell?
ENU\x64\SQLEXPR_x64_ENU.exeENU\x64\SQLEXPRADV_x64_ENU.exe
ENU\x64\SQLEXPRWT_x64_ENU.exe
-
DopeBob
addikt
-
V.Stryker
nagyúr
Sziasztok,
Ha jól tudom,akkor az MS-SQL-nek van ingyenes verziója. Ilyen 2000 vagy 2005 -ös verziót honnan tölthetnék le?

-
Ablakos
addikt
Oracle SQL-hez lenne kérdésem. Vannak ezek az external táblak, nem nagyon értem, hogy mire valók ezek!?
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY def_dir1
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS (employee_number CHAR(2),
employee_dob CHAR(20),
employee_last_name CHAR(18),
employee_first_name CHAR(11),
employee_middle_name CHAR(11),
employee_hire_date CHAR(10) date_format DATE mask
"mm/dd/yyyy“))
LOCATION ('info.dat'));Van egy leírás ami megmondja, hogy az adott utasítás részek mit csinálnak, de az nem derül ki belőle, hogy mi is a tényleges haszna ennek.
Mire való? Jó nagyot szívni, mire megtalálja a fejlesztő, melyik rekord vajon miért nem akar bemenni az adatbázisba

-
martonx
veterán
Hát nem mondom, hogy megértettem.

Van két adathalmazod. Az egyik SQL táblában, a másik meg egy szöveg fileban mondjuk vesszővel elválasztva.
Mit teszel, ha a kettő közös metszetét kellene meghatároznod?
Persze elkezdheted mindkettőt lekérni, majd memóriában for-okkal összeforgatni, és ifekkel ellenőrizni.
Vagy fogod, feltöltöd a csv-det egy ilyen external táblába, és egy szimpla sql select-el megkapod a közös halmazt.
Kapisgálod, hogy mire jó ez? -
PumpkinSeed
addikt
-
bpx
őstag
Oracle SQL-hez lenne kérdésem. Vannak ezek az external táblak, nem nagyon értem, hogy mire valók ezek!?
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY def_dir1
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS (employee_number CHAR(2),
employee_dob CHAR(20),
employee_last_name CHAR(18),
employee_first_name CHAR(11),
employee_middle_name CHAR(11),
employee_hire_date CHAR(10) date_format DATE mask
"mm/dd/yyyy“))
LOCATION ('info.dat'));Van egy leírás ami megmondja, hogy az adott utasítás részek mit csinálnak, de az nem derül ki belőle, hogy mi is a tényleges haszna ennek.
Az, hogy odamásolsz pl. egy CSV file-t és tudsz belőle úgy lekérdezni, mintha közönséges tábla lenne.
-
PumpkinSeed
addikt
Oracle SQL-hez lenne kérdésem. Vannak ezek az external táblak, nem nagyon értem, hogy mire valók ezek!?
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY def_dir1
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS (employee_number CHAR(2),
employee_dob CHAR(20),
employee_last_name CHAR(18),
employee_first_name CHAR(11),
employee_middle_name CHAR(11),
employee_hire_date CHAR(10) date_format DATE mask
"mm/dd/yyyy“))
LOCATION ('info.dat'));Van egy leírás ami megmondja, hogy az adott utasítás részek mit csinálnak, de az nem derül ki belőle, hogy mi is a tényleges haszna ennek.
-
csabyka666
veterán
-
csabyka666
veterán
-
cacattila
csendes tag
Üdv mindenkinek!
Tudtok valami módot arra, hogy milyen módon lehet azt visszajeleztetni mysql-lel, ha egy táblában történt változás?
Úgy módosítok egy táblát, hogy feltételhez kötöm, hogy egy felhasználó módosíthassa a rekordokat, avagy sem. Ezt úgy érem el, hogy PHP alól a jogosultságnak megfelelően alakítom ki a lekérdezés szövegét. Le is fut, és jól is csinálja, amit csinál, viszont ha így akarom megtudni az eredményt:
if ( mysql_query( $query ) ) {
echo "siker";
}
akkor minden esetben "siker"-t kapok vissza, én pedig csak akkor szeretném ezt visszakapni, ha tényleg módosult valami a táblázat adott sorában - az előző állapothoz képest.Szóval ha lefutott a kifejezés, de nem változtatott semmit a táblán, akkor azt akarom visszakapni, hogy "nincs jogosultságod".
Nem tudom, mennyire volt érthető a problémám, de köszönöm a segítséget előre is!

talán ilyesmire gondolsz?
[link] -
csabyka666
veterán
Üdv mindenkinek!
Tudtok valami módot arra, hogy milyen módon lehet azt visszajeleztetni mysql-lel, ha egy táblában történt változás?
Úgy módosítok egy táblát, hogy feltételhez kötöm, hogy egy felhasználó módosíthassa a rekordokat, avagy sem. Ezt úgy érem el, hogy PHP alól a jogosultságnak megfelelően alakítom ki a lekérdezés szövegét. Le is fut, és jól is csinálja, amit csinál, viszont ha így akarom megtudni az eredményt:
if ( mysql_query( $query ) ) {
echo "siker";
}
akkor minden esetben "siker"-t kapok vissza, én pedig csak akkor szeretném ezt visszakapni, ha tényleg módosult valami a táblázat adott sorában - az előző állapothoz képest.Szóval ha lefutott a kifejezés, de nem változtatott semmit a táblán, akkor azt akarom visszakapni, hogy "nincs jogosultságod".
Nem tudom, mennyire volt érthető a problémám, de köszönöm a segítséget előre is!

-
diegho
nagyúr
-
Ablakos
addikt
Terméktámogatás biztos segít. Csak egy levelet kell megírni.
-
diegho
nagyúr
Nem lehet importálni a programban sql táblából?
Csak egy visszatöltő programja van, ami már előre kimentett adatbázist tud visszatölteni. MS SQL 2005-öt használ szerverként. Fogalmam sincs mit tehetnék. Amikor csak rámásolom az adatbázist, akkor a program látja, hogy ott vannak a cégek, de megnyitni és kimenteni nem tudom őket.
-
PumpkinSeed
addikt
Sziasztok!
Lenne egy problémám. Adott egy kulcs-szoft könyvelő program, ami SQL adatbázisba menti a dolgait. A vinyó, amin ment a progi és az adatbázis meghalt, de le tudtam menteni róla a program files-t. A probléma az, hogy ebben a kulcs programban, csak úgy tudok adatokat menteni, ha feltelepítem újra és a saját mentő részével kimentem. Ez a mentő rész értelemszerűen az sql-ből menti ki a dolgait, de ugyebár nekem csak a régi kimásold sql mappám van meg, amiben ott van minden, de hiába másolom be az újba, azt mondja, hogy nem tudja kimenteni, mert pár hivatkozás nem egyezik. Mit tudok tenni?
Nem lehet importálni a programban sql táblából?
-
diegho
nagyúr
Sziasztok!
Lenne egy problémám. Adott egy kulcs-szoft könyvelő program, ami SQL adatbázisba menti a dolgait. A vinyó, amin ment a progi és az adatbázis meghalt, de le tudtam menteni róla a program files-t. A probléma az, hogy ebben a kulcs programban, csak úgy tudok adatokat menteni, ha feltelepítem újra és a saját mentő részével kimentem. Ez a mentő rész értelemszerűen az sql-ből menti ki a dolgait, de ugyebár nekem csak a régi kimásold sql mappám van meg, amiben ott van minden, de hiába másolom be az újba, azt mondja, hogy nem tudja kimenteni, mert pár hivatkozás nem egyezik. Mit tudok tenni?
-
martonx
veterán
-
jocomen
aktív tag
Értem. Akkor gondolom marad a virtuális tábla, vagy segédLekérdezés.
Más db (VisualStudio) is ennyire korlátolt, vagy csak az access?szerk: ja látom meg is írtad ... köszi

-
sztanozs
veterán
"1-sok" kapcsolattal: a Tábla2 kulcsa szerepel a Tábla1-ben is külső kulcsként, csak a példába nem írtam bele.
Mondjuk így nézne ki:Tábla2 PK:t2_id; c -----1-sok------- Tábla1 PK:t1_id; FK:t2_id; a; b.
Tábla1 "b" oszlopánál kéne megadni a következő kifejezést az Access számára érthető módon: =c*a
Számított mezőnek nem lehet része más tábla mezője.

Query-t viszont össze tudsz dobni, ahol egy mező több forrásmezőből számítódik.SELECT t1.t1_ID, t1.a, [t1].[a]*[t2].(c) AS b
FROM Table1 AS t1 INNER JOIN Table2 AS t2 ON t1.t1_ID = t2.t2_ID;(/C)[/M] -
jocomen
aktív tag
"1-sok" kapcsolattal: a Tábla2 kulcsa szerepel a Tábla1-ben is külső kulcsként, csak a példába nem írtam bele.
Mondjuk így nézne ki:Tábla2 PK:t2_id; c -----1-sok------- Tábla1 PK:t1_id; FK:t2_id; a; b.
Tábla1 "b" oszlopánál kéne megadni a következő kifejezést az Access számára érthető módon: =c*a
-
sztanozs
veterán
-
jocomen
aktív tag
Hali
Access-ben szeretnék egy mezőbe (b) számított értéket íratni: b=a*c
Tábla1: t1_id; a; b
Tábla2: t2_id; cA gond, h még táblán belüli oszlop értékével sem enged számolni. Pl ha "b" cellában, érvényességi szabályként megadom: =a*2 , akkor a következő hibaüzenetet dobja: "érvénytelen sql szintaxis - oszlopszintő CHECK korlátozás esetén nem használható több oszlop".
Néztem microsoft oldalán a leírást, de nem lettem okosabb. Nem tudom értelmezni a hibaüzenetet. Az adatbátist nem én hoztam létre, már meglévőt bővítenék. "c" oszlopot minden további nélkül létre lehet hozni, csak a számított értékkel van valami gond.Végén 2 tábla adataival kellene számolnom, de még táblán belüli oszlopéval se sikerült eddig.
Tudna valaki segíteni?Akarom mondani: "b" oszlopot utólag létre tudtam hozni, csak értékként nem fogadja el a számított értéket.
-
jocomen
aktív tag
Hali
Access-ben szeretnék egy mezőbe (b) számított értéket íratni: b=a*c
Tábla1: t1_id; a; b
Tábla2: t2_id; cA gond, h még táblán belüli oszlop értékével sem enged számolni. Pl ha "b" cellában, érvényességi szabályként megadom: =a*2 , akkor a következő hibaüzenetet dobja: "érvénytelen sql szintaxis - oszlopszintő CHECK korlátozás esetén nem használható több oszlop".
Néztem microsoft oldalán a leírást, de nem lettem okosabb. Nem tudom értelmezni a hibaüzenetet. Az adatbátist nem én hoztam létre, már meglévőt bővítenék. "c" oszlopot minden további nélkül létre lehet hozni, csak a számított értékkel van valami gond.Végén 2 tábla adataival kellene számolnom, de még táblán belüli oszlopéval se sikerült eddig.
Tudna valaki segíteni? -
dellfanboy
őstag
-
Ablakos
addikt
mi a legegyszerűbb módja, hogy 1 oszlopban megszámoljam a változókat?
select distinct oszlopnév from táblanév ?mi a helyzet ha két oszlopot akarok lekérni de csak az egyiket sorba rendezni?
A distinct nem számol, hanem a mögötte álló oszlop(ok)ból egyedi értékeket képez.
select count(distinct oszlopnév ) from táblanév; egyedi értékek számossága -
dellfanboy
őstag
mi a legegyszerűbb módja, hogy 1 oszlopban megszámoljam a változókat?
select distinct oszlopnév from táblanév ?mi a helyzet ha két oszlopot akarok lekérni de csak az egyiket sorba rendezni?
-
jozsi84
tag
ha B még nem létezik:
Select * into B from A;
update B set dátum_mező = dateadd(minute, 30, dátum_mező);Ha B már létezik, és dátum mező neve = dátum
Insert into B(mező1, mező2, mező_n, dátum) select mező1, mező2, mező_n, dateadd(minute, 30, dátum ) from A;
MSSQL
Elnézést a késői reakcióért....
Köszönöm szépen a választ/okat! Sikerült megoldanom...
-
Apollo17hu
őstag
Az nvl-es megoldás működik, ezt kerestem. Ha esetleg lehet még javítani a kódon, azt szívesen fogadom.
-
martonx
veterán
Ez már így szerintem nem a "legegyszerűbb" megoldás.

Maradok egyelőre Zeratul javaslatánál, remélhetőleg alkalmazható.Esetleg ha sqlfiddle-re tennél fel példát, akkor el is tudnánk mélyedni benne az ötletelés helyett.
-
martonx
veterán
Ezt nem értem, hogy miért/miben lenne jobb. Kifejtenéd?
Jobbnak nem jobb, csak leírva rövidebb, mint egy jó hosszú case when.
-
Apollo17hu
őstag
1. Csinálsz egy union-t 2 tablabol, plusz 2 üres mezővel: t1_fl, t2_fl. Ez mondjuk t3 táblába megy
2.
Update t3
Set t1_fl= 'x'
Where amely szerepel a t1 táblában3.
Update t3
Set t2_fl= 'x'
Where amely szerepel a t2 táblábanEz már így szerintem nem a "legegyszerűbb" megoldás.

Maradok egyelőre Zeratul javaslatánál, remélhetőleg alkalmazható. -
FireFox1996
addikt
Nem, az azonosító és az időbélyeg együttesen kulcs.
t1:
id calendar_date
1 2013.12.31
2 2014.01.01
3 2013.12.31
4 2014.01.01
6 2013.12.31
8 2013.12.31
9 2013.12.31
12 2013.12.31t2:
id calendar_date
1 2013.12.31
3 2013.12.31
5 2013.12.31
6 2013.12.31
8 2013.12.31
11 2014.01.01
15 2014.01.01ezt szeretném:
id t1_fl t2_fl
1 x x
3 x x
5 x
6 x x
8 x x
9 x
12 x1. Csinálsz egy union-t 2 tablabol, plusz 2 üres mezővel: t1_fl, t2_fl. Ez mondjuk t3 táblába megy
2.
Update t3
Set t1_fl= 'x'
Where amely szerepel a t1 táblában3.
Update t3
Set t2_fl= 'x'
Where amely szerepel a t2 táblában -
Apollo17hu
őstag
Ugyanaz a record többször előfordulhat egy táblában?
Nem, az azonosító és az időbélyeg együttesen kulcs.
t1:
id calendar_date
1 2013.12.31
2 2014.01.01
3 2013.12.31
4 2014.01.01
6 2013.12.31
8 2013.12.31
9 2013.12.31
12 2013.12.31t2:
id calendar_date
1 2013.12.31
3 2013.12.31
5 2013.12.31
6 2013.12.31
8 2013.12.31
11 2014.01.01
15 2014.01.01ezt szeretném:
id t1_fl t2_fl
1 x x
3 x x
5 x
6 x x
8 x x
9 x
12 x -
FireFox1996
addikt
Ez azért nem lenne jó, mert ha mindkét táblában megvan a rekord, akkor csak az egyikre vonatkozó érték (1 vagy 2) fog megjelenni "honnan"-ban.
Ugyanaz a record többször előfordulhat egy táblában?
-
Apollo17hu
őstag
-
martonx
veterán
A legegyszerűbb megoldást keresem egy olyan halmaz létrehozására, ami tartalmazza t1 és t2 minden elemét (az azonos elemeket csak egyszer), és segédmezőkben tárolom, hogy az elem megtalálható-e t1-ben és/vagy t2-ben. Utóbbira CASE WHEN t1.id IS NOT NULL THEN 'x' END t1_fl és t2_fl mezőket vettem fel. Nem tudom, hogy UNION ALL -lal a segédmezők megvalósíthatóak-e. (A segédmezőkre később szűrök, ezért kellenek.)
A case when helyett coalesce-et használnék
-
Apollo17hu
őstag
Union kell!
Select..., 1 honnan from tábla1
Union
Select..., 2 honnan from tábla2A "honnan" mező alapján tudod hogy tábla1 vagy tábla2-ből származik...
Ez azért nem lenne jó, mert ha mindkét táblában megvan a rekord, akkor csak az egyikre vonatkozó érték (1 vagy 2) fog megjelenni "honnan"-ban.
-
FireFox1996
addikt
A legegyszerűbb megoldást keresem egy olyan halmaz létrehozására, ami tartalmazza t1 és t2 minden elemét (az azonos elemeket csak egyszer), és segédmezőkben tárolom, hogy az elem megtalálható-e t1-ben és/vagy t2-ben. Utóbbira CASE WHEN t1.id IS NOT NULL THEN 'x' END t1_fl és t2_fl mezőket vettem fel. Nem tudom, hogy UNION ALL -lal a segédmezők megvalósíthatóak-e. (A segédmezőkre később szűrök, ezért kellenek.)
Union kell!
Select..., 1 honnan from tábla1
Union
Select..., 2 honnan from tábla2A "honnan" mező alapján tudod hogy tábla1 vagy tábla2-ből származik...
-
Apollo17hu
őstag
Ha uniót akarsz, akkor nem így full outer join kell, mert azzal csak "metszet"-et kapsz.
ha unio kell, akkor ott az unio kulcsszó.
select .. from t1 where ...
union / vagy union all /
select ... from t2 where...
A legegyszerűbb megoldást keresem egy olyan halmaz létrehozására, ami tartalmazza t1 és t2 minden elemét (az azonos elemeket csak egyszer), és segédmezőkben tárolom, hogy az elem megtalálható-e t1-ben és/vagy t2-ben. Utóbbira CASE WHEN t1.id IS NOT NULL THEN 'x' END t1_fl és t2_fl mezőket vettem fel. Nem tudom, hogy UNION ALL -lal a segédmezők megvalósíthatóak-e. (A segédmezőkre később szűrök, ezért kellenek.)
-
Apollo17hu
őstag
-
FireFox1996
addikt
FULL OUTER JOIN-nal azonosítón keresztül összekötök két táblát. A táblákban időbélyegek vannak, mindkettőben adott nap (ugyanaz a nap) érdekel csak. Ha a táblákat allekérdezésbe rakom, és "előszűröm" őket a szükséges napra, akkor működik a lekérdezésem.
Van allekérdezés nélküli megoldás? Ez a kód nem jó, mert a WHERE miatt metszetet kapok unió helyett (-> "megöli a FULL OUTER JOIN-t")
SELECT ...
FROM t1
FULL OUTER JOIN
t2
ON t1.id = t2.id
WHERE 1 = 1
AND t1.calendar_date = to_date('20131231', 'yyyymmdd')
AND t2.calendar_date = to_date('20131231', 'yyyymmdd')Ha uniót akarsz, akkor nem így full outer join kell, mert azzal csak "metszet"-et kapsz.
ha unio kell, akkor ott az unio kulcsszó.
select .. from t1 where ...
union / vagy union all /
select ... from t2 where...
Új hozzászólás Aktív témák
-
2300 - 2201
6041 - 6001 6000 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- SQL kérdések
- (kiemelt téma)
- 27% - ASUS VivoBook S15 OLED! Snapdragon X Elite / 16GB DDR5 / 1TB NVMe Notebook!
- Eladó egy pixel 6
- GYÖNYÖRŰ iPhone 13 Pro 128GB Alpine Green -2 ÉV GARANCIA - Kártyafüggetlen, MS5509
- Apple iPhone 17 256GB & 512GB Bontatlan Független Összes Szín / 27% áfás ár
- BESZÁMÍTÁS! MSI SUPRIM X RTX 3070 8GB videokártya garanciával hibátlan működéssel
Állásajánlatok
Cég: aiMotive Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest



Ezeket az agymenéseket miért nem rakod inkább OFF-ba?
Mondjuk most pont tök szórakoztató ilyeneket olvasgatni, amikor valaki túlheveskedi a kommentjeit, de valószínűleg kicsit más hangulatban írjuk épp a hsz.-einket.




![;]](http://cdn.rios.hu/dl/s/v1.gif)


... tesztelni tökéletes




