Avatar billede mrplov Nybegynder
05. juli 2004 - 18:04 Der er 5 kommentarer og
1 løsning

Ide til skrabet query

Hej

Jeg har en tabel med et ID field som kan have "huller".
Jeg behöver en query som kan retunere:
Row -3
Row -2
Row -1
Row
Row +1
Row +2
ud fra et givent ID, altså 7 rows totalt.
Problemet er at jeg ikke bare kan sige Row - eller + 1
da der kan forekomme spring i ID'erne.
Som det er nu laver jeg en UNION:

(SELECT SQL_CACHE ID, CategoryID, SubCategoryID, Added
FROM Pictures
WHERE CategoryID =8 AND SubCategoryID =26 AND ID <=75502
ORDER  BY ID DESC
LIMIT 4)
UNION
(SELECT SQL_CACHE ID, CategoryID, SubCategoryID, Added
FROM Pictures
WHERE CategoryID =8 AND SubCategoryID =26 AND ID >75502
ORDER  BY ID
LIMIT 3)
ORDER BY ID

Er der en som har en ide til en "billigere" query?
Jeg har en mistanke om at denne bliver for tung i det
lange löb.

På forhånd tak.
Avatar billede mortenfn Nybegynder
06. juli 2004 - 13:21 #1
Jeg er ikke helt med, men hvis den søgte id liver f.eks. 125 så laver du en ny søgning com er id - 3 limit 7 -->>  125-3 ->> id 0 122 ....... limit 7
Avatar billede mortenfn Nybegynder
06. juli 2004 - 13:21 #2
->> id = 122  den smuttede!
Avatar billede mrplov Nybegynder
06. juli 2004 - 15:49 #3
Jo, men jeg ville jo undgå for mange queries.
Den UNION jeg bruger nu er jo faktisk 2 queries.
Havde håbet på at det kunne udföres med kun 1.
Avatar billede mortenfn Nybegynder
06. juli 2004 - 16:45 #4
på den måde du har lavet det vil du løbe mange data igennem to gange.

Jeg han se at ID er kendt nemlig 75502 hvis du sætter id til  (minus syv) $id1=75502-7;

SELECT SQL_CACHE ID, CategoryID, SubCategoryID, Added
FROM Pictures
WHERE CategoryID =8 AND SubCategoryID =26 AND ID >$id1
ORDER  BY ID
LIMIT 7
Avatar billede mrplov Nybegynder
06. juli 2004 - 17:18 #5
Problemet er jo at det ikke er sikkert at ID-7 eksisterer.
Som jeg skriver, er der "huller i ID'erne", dvs. at der er blevet slettet i DB'en
Jeg SKAL ha de 3 ID'er på hver side af det ID som er kendt (75502 i dette tilfälde)
Avatar billede mrplov Nybegynder
07. juli 2004 - 13:38 #6
!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester