Kom ihåg mig?
Home Menu

Menu


SQL-sökning..

 
Ämnesverktyg Visningsalternativ
Oläst 2006-09-01, 12:53 #1
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Om man vill göra en sökning i mySQL, säg tex.
SELECT * FROM databas WHERE intvariabel = '5'

Nu får man ut alla resultat där intvariabel = '5', låt oss säga runt 150 poster..
Om det finns ett id-fält i databasen, kan man på något sätt i sökningen ovan få reda på vilket plats ett speciellt id-nummer har i just denna sökning?
Någon som förstår vad jag menar?
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:03 #2
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Vilken plats i sökningen...? Alltså om posten med ID-numret 23 finns som resultat 50? Beror ju helt på vad du sorterar efter också och hur vet du att ett visst ID-nummer finns med i resultatet öht? Det går nog bara att ordna till i scriptet med php eller asp eller vad du nu kör med.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:05 #3
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Citat:
Originally posted by tartareandesire@Sep 1 2006, 13:03
Vilken plats i sökningen...? Alltså om posten med ID-numret 23 finns som resultat 50? Beror ju helt på vad du sorterar efter också och hur vet du att ett visst ID-nummer finns med i resultatet öht? Det går nog bara att ordna till i scriptet med php eller asp eller vad du nu kör med.
Japps, brukar göra så.. problemet är om sökningen matchar 100.000 rader, då blir det bli onödigt att behöva gå genom alla dessa rader för att få fram vart någonstans bland dessa 100.000 rader mitt id-nr finns.. det är bara det är jag ute efter, alltså vart det finns i det ordnade mysql-resultatet.. inte informationen..
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:12 #4
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Hmm, jag är alltså nyfiken på varför du vill veta på vilken plats i resultatet ditt id förekommer. Som föregående sa så beror det på hur det är sorterat alt i vilken ordning det är inlagt i databasen, men det är inget jag skulle lita på...

Vill du inte specifikt selectera ut ditt id-nummer så får du ju helt enkelt snurra igenom hela resultatet på klienten.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:16 #5
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Citat:
Ursprungligen postat av Robert
SELECT * FROM databas WHERE intvariabel = 5 AND mittID = 666

Hehe, uttrycker mig väldigt oklart & luddigt..
Jag vill alltså veta vart någonstans i den "stora" sökningen mitt id-nr finns, jag vill inte ha ut det... jag vill bara veta på vilket plats av tex. 100.000 sökningar (där varje rad har olika id-nr) just mitt id-nr på tex. 345234 ligger...

Citat:
Ursprungligen postat av Robert
Hmm, jag är alltså nyfiken på varför du vill veta på vilken plats i resultatet ditt id förekommer. Som föregående sa så beror det på hur det är sorterat alt i vilken ordning det är inlagt i databasen, men det är inget jag skulle lita på...
Det har med sk. "paging" (dvs. precis som det fungerar här i forumet, där sidorna är indelade 1 till tex. 4 beroende på hur många inlägg varje tråd har) att göra, dvs resultatet visas på flera, uppdelade sidor med hjälp av LIMIT.. vid sökning vill jag få reda på vart det eftersökta inlägget finns, för att man sedan ska komma rätt på sidorna med "paging"..
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:19 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Citat:
Ursprungligen postat av thorsell
Citat:
Ursprungligen postat av Robert
SELECT * FROM databas WHERE intvariabel = 5 AND mittID = 666

Hehe, uttrycker mig väldigt oklart & luddigt..
Jag vill alltså veta vart någonstans i den "stora" sökningen mitt id-nr finns, jag vill inte ha ut det... jag vill bara veta på vilket plats av tex. 100.000 sökningar (där varje rad har olika id-nr) just mitt id-nr på tex. 345234 ligger...
Första steget är att sortera. Lite inte på att du får ut ett rs i den ordning det lades in, databasen kan lika gärna köra någon intern sortering utanför din kontroll om du inte anger sorteringskolumn (kan ej just mySql så bra så jag vet inte).

...Och när du väl sorterar, VAD ska du sortera på? Det måste finnas någon liten vurpa i ditt tankesätt här. Kan du inte berätta varför positionen är av intresse?
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:21 #7
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Ok vi skriver om varandra lite här...

Sortera efter datum då och låt koden som ritar ut paging-navigeringen sätta exempelvis det sista datumet för den nedersta posten som ritas ut på skärmen. Därmed vet nästa sql fråga vilket datum den ska köra nästa fråga fr.o.m
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:22 #8
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Citat:
Ursprungligen postat av Robert
Citat:
Ursprungligen postat av Robert
...Och när du väl sorterar, VAD ska du sortera på? Det måste finnas någon liten vurpa i ditt tankesätt här. Kan du inte berätta varför positionen är av intresse?
Vi skriver visst om varandra här, tror jag svarade på din fråga på inlägget ovan..
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:31 #9
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Hm, vet inte riktigt om det är det jag eftersträvar...
Problemet kan alltid lösas med PHP, men då måste resultatet sparas och hela sökningen med resultat måste gås genom.

Nedanstående exempel visar en sökning i en topplista, sökningen sorteras efter totscore (=totala antalet röster) och votes (=summan vid varje röstning tillagd 1-10, så vid tex. två röstningar där två 10r röstas ger votes = 20).
Nu får man en sorterad lista där den med mest poäng kommer överst och så vidare..
För att få reda på vart en medlem med id-numret $id ligger i denna sorterade lista måste reslutatet gås genom med PHP som exemplet nedan visas..

Kod:
<?
$get_list_check = $tsdb->query("SELECT id,totscore FROM topplista ORDER BY (votes/totscore) DESC, totscore DESC");
$i=1;
$list_pos = $get_list_check->numRows();
while ($rad=$get_list_check->fetchRow()) 
{
	if ($id==$rad["id"]) 
	{
 *$list_pos = $i;
 *break;
	}
	$i++;
}
$get_list_check->free();
?>
Tycker dock att detta verkar lite osmidigt samt att det tar lång tid.. Därför jag undrade om SQL kunde lösa resultatet åt mig från början
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-09-01, 13:41 #10
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Ja, om ditt problem med pagingen är att du ska plocka ut delar av hiscorelistan så behöver du ju i din paging-kanpp/länk veta nästa ofset, vilket borde vara poängen, dvs första sidan visar de med 10 högsta poäng + lagrar poängen för den sista raden (10:e platsen). När du klickar på knappen så skriver du en ny sql fråga där du sätter ett WHERE vilkor att poängen måste vara mindre än X. Du kan använda typ limit för att slippa dra ner hela tabellen....
Robert är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017