SQL kérdések - Szoftverfejlesztés fórum

üzenetek

hozzászólások


bazs
(aktív tag)
Blog

Egy kicsit kevéssé konkrét kérdésem/problémám lenne

Hol lehet a neten találni valamilyen SQL-es megoldott feladatsort? Tehát arra gondolok, hogy ott vannak a feladatok, hogy milyen táblákon kell végrehajtani és egy helyes megoldás is.
Próbáltam google-val keresni nem sok eredménnyel...


bazs
(aktív tag)
Blog

Senki?
UP


Tyrael
(senior tag)

google nekem egy csomo talalatot kidobott a mysql example szokombinaciora
ez az elso talalat:
[link]
lap kozepe tajan ott a mysql example.

Tyrael


Gh0sT
(addikt)

Primitiv kérdés, de nem vagyok biztos a válaszban.

Ha olyan táblákkal dolgozom, amelyek mezői (tulajdonságai) elsősorban szöveges adatokat tartalmaznak, akkor milyen adattípust célszerű választani SQL Server 2005-nél?
Char(n), Nchar(n), Text, Ntext?

Illetve mit használjak akkor, ha az elsődleges kulcs is szöveges?


Tyrael
(senior tag)

asszem char, meg varchar meg ezek veges meretuek (talan 255 karakter?), text meg akarmilyen hosszu lehet.
de mintha valaki panaszkodott volna ra, hogy text-ben nem mukodott a toredekszo kereses (like ?* stb)
meg szerintem az hogy valami milyen tipus, az nem attol fugg, hogy kulcs-e, vagy nem, hanem hogy mit akarsz benne tarolni, mi a funkcioja.
kerdes, van mysql-ben valami veletlenszam generalas, vagy lehet a visszakapott sorokat veletlenszeruen rendezni?
konkret feladat az lenne, hogy banner-t kene veletlenszeruen kivalasztani, es megjeleniteni.
erre lehetne megoldas, hogy elobb lekerdezem, hogy hany aktiv banner van, es 1 es reklamok szama kozti tartomanyban generaltatok php-val egy egesz szamot, de akkor 2 lekerdezes kellene.
ha viszont van valami ilyesmi mysql-ben, akkor 1 lekerdezessel egybol vissza is kapnam a randomban kivalasztott banner sorat.
elore is koszi, kozben azert megcsekkolom a manualt is, hatha

Tyrael


Gh0sT
(addikt)

Köszi!

Nekem sem működött a töredékszó keresés, ezért is kérdeztem. Megpróbálom a Varchart, de mintga a charral is lettek volna LIKE-os problémáim. A Text egyelőre megy, de ott meg azt hiszem nem tudok elsődleges kulcsot definiálni, ha ilyen adattípust választok.


L3zl13
(nagyúr)

Mysql + random:
RAND(), RAND(N)

Returns a random floating-point value v between 0 and 1 inclusive (that is, in the range 0 <= v <= 1.0). If an integer argument N is specified, it is used as the seed value, which produces a repeatable sequence.
...

To obtain a random integer R in the range i <= R <= j, use the expression FLOOR(i + RAND() * (j – i).
...

You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. However, you can retrieve rows in random order like this:

SELECT * FROM tbl_name ORDER BY RAND();

...


[link]


Tyrael
(senior tag)

select * from table order by rand() limit 1
kosz, kozben enis megtalaltam. :)

Tyrael


sequator
(senior tag)

attól függ mekkora szöveget kell tárolni.
én MSSQL2000ben általában varchart használok, ez 8000 karakter hosszú lehet, ami azért elég sok dologra elég valamint lehet rá likeolni és lehet primary key is

Sautia


Tyrael
(senior tag)

az kiraly.
mysql-ben max 255 hosszu lehet csak.

Tyrael


Gh0sT
(addikt)

Istenkirály! :)

Ez kell nekem! Köszi! :)

Még egy kérdés: módosítanom kell ezek szerint az adatok típusát egyes táblákban. A gond csak az, hogy köztük már létezik kapcsolat. Ilyenkor bontanom kell az összes kapcsolatot és egyesével átállítgatni minden tábla minden mezejét, vagy kulcsok esetén elegendő az elsődleges kulcsokat módosítanom és a másik táblában lévő kapcsolt mező típusa is változni fog?


Tyrael
(senior tag)

jo kerdes.
elmeletileg relacios izebizeknel azonos tipusnak kell lennie.
szal szerintem fel kell bontanod addig a relaciot.

Tyrael


sequator
(senior tag)

elvileg felkínálja, hogy a kapcsolt táblákban is lecseréli, akkor nyomhatsz rá yes, no-t meg cancelt.

Sautia


Gh0sT
(addikt)

Megcsináltam. Módosítottam az adatokat Varchar-ra, de hogyan tudom beállítani a mező maximális hosszát? Úgy néztem, hogy nem vehet fel Varchar(50) és Varchar(MAX)-on kívül mást. Ezesetben a VB-s felületen kell vizsgálnom a mező értékének hosszát és ott kell megtiltanom, hogy ne lehessen mondjuk 20-nál több karaktert rögzíteni?


Tyrael
(senior tag)

nalam 1-255ig barmi lehet

Tyrael


burgatshow
(veterán)
Blog

Ha varcharban 20-at állítasz be, és mondjuk van egy 25 karakteres felvinni valód, akkor csak az első 20 karakter kerül majd letárolásra. A maradék 5-öt lecsapja....


sequator
(senior tag)

azt sajnos már táblánként kell beállítani, ha jól nézem.
végig kell menni a táblákon és mindegyiken beállítani a varcharrá változtatott mezők hosszát a megfelelőre


sequator
(senior tag)

a következő problémába futottam bele:

adott egy tábla, amiben vannak kurzuskod, kurzuscim, kredit, teljesites, oratipus mezők.
a probléma az, hogy vannak olyan sorok, ahol a kurzuskód azonos, de a többi mező különböző. viszont nekem a kurzuskódot mindenképpen egyedivé kellene tennem.

hogy tudnám azt viszonylag egyszerűen és gyorsan megcsinálni, hogy az azonos kurzuskódokat, mondjuk /a /b /c stb. vagy /1 /2 /3 stb kiegészítéssel egyedivé tegyem?

ja és a táblában 900 rekord van ebből 180 olyan kurzuskód van, amiből egynél több van.

szerk:a dőltbetűs rész

előre is köszönet a segítségért.

Sautia

[Szerkesztve]


paramparya
(őstag)

Hát, az sql-nyelvben erre nincs támogatás sztem...
Esetleg írsz rá egy programot, ami ezt megcsinálja


tbs
(addikt)

Ha nek kell feltétlenül ilyen csinos megkülönböztető jelzés, akkor ez alapján kiötölheted a saját megoldásod:
select if(mod(id,2)=0,id,concat(leltarisz,id)) from raktar;

üzenetek