ugrás a tartalomhoz

Cikkek lekérdezése aktív felhasználóktól (SQL)

Anonymous · 2006. Feb. 14. (K), 19.16
Hali,

szeretnék egy komplexxebb sql kérést megvalósitani 1 lekérdezésben, de nem sikerál, több lekérdezésben és feltételes elágazás segitségével sikerül kivitelezni de igy hosszú, amit szeretnék:
2 tábla van, egyikben cikkek(usernev,cikk,...), masikban userek(usernev,...), kell a cikk tabla legfrisebb 10 cikke, de csak azoktol a useroktol akik aktivak, és 1 usertol ne szerepeljen 2 cikk a top 10 ben, tehát minden usertol max 1 cikk lehet a topban.

köszi
dreamer
 
1

lekerdezes

Anonymous · 2006. Feb. 14. (K), 20.01
Nem probaltam, de igy mennie kellene:

SELECT c.cikk
FROM cikkek c INNER JOIN userek u ON c.usernev=u.usernev
WHERE c.id = (
 SELECT c1.id
 FROM cikkek c1
 WHERE c1.usernev=c.usernev
 ORDER BY c1.datum
 LIMIT 0,1 ) 
and u.aktiv=1
ORDER BY c.datum
LIMIT 0,10
2

hiba

Anonymous · 2006. Feb. 15. (Sze), 18.02
#1064 - You have an error in your SQL syntax near 'SELECT c1.id ..
és mivel nem értem a lekérést a hiba sem mondd semmit :(
és itt a c, c1, u vmi virtual tablák? vagy hogy jönnek a képbe? és nem kell vessző a from cikkek, c helyre?
egyéb ötlet?
de köszi

dreamer
3

RE: hiba

PAtrik · 2006. Feb. 15. (Sze), 18.28
milyen verzioju mysql-t hasznalsz?

a c,c1 azok elnevezesek a tablak szamara amely a selectben ervenyes. nem keszul semmilyen virtualis tabla. Egy tabla lehet tobb neven is igy meg tudod mondani ponosan melyikre gondolsz.

a select magyarazata: a kulso szelect kivalasztja az elso 10 cikket a datum sorrendjeben hozzacsatolja a megfelelo sort az user tablabol h. tudjak feltetelt tenni arra h. a felhasznalo aktiv e. Ezen kivul csak azokat a cikkeket listazza ki ahol a cikk id-je (egyedi szama) megegyezik az felhasznalo legfrissebb cikkenek az id-jevel. a belso select a felhasznalo legfrissebb cikkjet valasztja ki.

van a cikkek tablaban id oszlopod? ott lehet esetleg a hiba. vagyt h. regebbi a mysql-d es nem tamogatja a subselekteket. ha megirod milyen verzioju akkor leprobalom azon a verzion es kijavitom. esetleg irj mailt es megbeszeljuk, h. kuldenel dump-ot amin probalhatnek.
4

<Nincs cím>

Anonymous · 2006. Feb. 16. (Cs), 18.27
sql verzio: 3.23.54
cikkek tabla (id, usernev, cim, date, ...)
user tabla (id, usernev, ...)
dumpot nem küldenék mert érzékeny adatok lehetnek,
köszi
dreamer
5

verzio

PAtrik · 2006. Feb. 16. (Cs), 19.41
hat, jo oreg verziot hasznalsz. nagyon korlatozottak a leehtosegek. egyenlore jobb nem jutott eszembe mint megtippelni h. mennyi legfrissebb cikkben lesz 10 kulombozo user es annyit lekerni, es csak a kulombozoket kiirni. es ha tutira akarsz menni akkor meg esetleg utanna ujra kerni tovabbiakat. termeszetesen a cikkek amiket kersz csak aktiv folhasznaloktol lennenek, szoval valahogy igy:

SELECT cikkek.id,cikkek.usernev,cikkek.cim,cikkek.date
FROM cikkek,userek
WHERE cikkek.usernev=userek.usernev 
 and userek.aktiv=1
ORDER BY cikkek.date DESC
LIMIT 0,40
a kovetkezo lekerdesesnel a LIMIT 40,60 lehetne (meg 20 cikket). ha jobb eszembe jut meg irok.
6

<Nincs cím>

Anonymous · 2006. Feb. 17. (P), 12.34
nem én használom ezt a régi sql-t hanem ez van a serveren és akkor a php-ról még nem is beszéltem 4.2.2 :) root-ot rugdosni kell ..
a lényeg hogy én is erre jutottam csak épp ezért akartam optimalizálni a lekérést, mert nehogy kevesebbet kérjen le mint amiben megvan a 10 és ne is 10 szer annyit h tutira menjek, szal probaltam vhogy group by, having segitségével ugyeskedni de nem iagzán sikerált,

köszi
dreamer
7

plussz info

PAtrik · 2006. Feb. 18. (Szo), 10.45
meg az jutott eszembe h. ha van modod modositani a tablazatot, a cikkek melle tegy egy logikai erteket h. a usernek az e a legfrissebb cikkje. minden uj cikk betetele elott eleg az elozot attalitani 'nem' ertekre. es igy tuti ki tudod valasztani minden user legfrissebb cikkjet. igaz betetelkol +1 seelct, de szerintem eszre sem venne a szerver.