Kom ihåg mig?
Home Menu

Menu


mySQL-fråga

Ämnesverktyg Visningsalternativ
Oläst 2006-01-09, 16:34 #1
Kristofers avatar
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2004
Inlägg: 1 053
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
Kristofers avatar
 
Reg.datum: Mar 2004
Inlägg: 1 053
Hej!
Undrar om det finns något SQL-kommando, jag kör mySQL, som i en SELECT-förfrågan kan "tjuvkika" på ett columnvärde i nästkommande rad.

Alltså, för att förtydliga, säg att vi har tabellen:
Citat:

id, antal, pris
1, 50, 2000
2, 100, 1000
3, 10, 100
Om jag här gör en SELECT * from table... ORDER by ID ASC så går den ju naturligt och tittar på mina värden i rad 1 först. Här behöver jag på ett bra sätt kunna komma åt pris för rad 2. När jag sen väl är på rad 2 och skriver ut data därifrån behöver jag få fram pris från rad 3 för en liknande beräkning osv..

Finns det något smidigt sätt att tjuvkika framåt för att lösa detta utan att behöva vara så drastisk att man gör nya databasanslutningar eller något annat onödigt krävande?
Kristofer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 16:49 #2
jimmies avatar
jimmie jimmie är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 751
jimmie jimmie är inte uppkopplad
Mycket flitig postare
jimmies avatar
 
Reg.datum: Oct 2004
Inlägg: 751
Varför inte använda två variabler?

$result = mysql_query($sqlstring)
or die(mysql_error());

$data1 = null;
while($data2 = mysql_fetch_assoc($result)) {

if($data1 != null) {

//Gör det du ska göra, i $data1 ligger posten, i $data2 ligger nästa post

}

$data1 = $data2;
}

Givetvis får du anpassa så att sista posten behandlas på det sättet du vill men med ovan som grund har man ett effektivt sätt att lösa uppgiften.
jimmie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 17:11 #3
Kristofers avatar
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2004
Inlägg: 1 053
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
Kristofers avatar
 
Reg.datum: Mar 2004
Inlägg: 1 053
..och finns det någon som kan hjälpa mig att översätta mysql_fetch_assoc till ASP?
Kristofer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 17:18 #4
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Det jimmie egentligen menar är väl att du kan lösa det enkelt i en loop istf med SQL (vilket ju självklart är fult möjligt med antingen subselect eller outer joins).
I princip är det han menar att när du befinner dig på en rad kan du ju även komma åt nästa rad i ditt resultatset.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 17:46 #5
Kristofers avatar
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2004
Inlägg: 1 053
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
Kristofers avatar
 
Reg.datum: Mar 2004
Inlägg: 1 053
Okej, då är det alltså subselect och outer joins jag måste läsa på lite om. Har bara mycket begränsade kunskaper när det gäller SQL men det är nog inte så svårt nu när jag vet nyckelorden iaf, bara att läsa förhoppningsvis
Kristofer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 17:48 #6
jimmies avatar
jimmie jimmie är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 751
jimmie jimmie är inte uppkopplad
Mycket flitig postare
jimmies avatar
 
Reg.datum: Oct 2004
Inlägg: 751
Citat:
Originally posted by Kristofer@Jan 9 2006, 19:11
..och finns det någon som kan hjälpa mig att översätta mysql_fetch_assoc till ASP?
Antar att du kör vanliga asp(ej .Net)

mysql_fetch_assoc betyder att man hämtar en rad ur resultatsetet. I asp kanske du får lösa det så här typ:

Kod:
dim pris1
dim pris2
pris1 = RecSet("pris");
Do Until RecSet.EOF

 pris2 = RecSet("pris")

 %%Gör det du ska göra
 
 pris1 = pris2
 RecSet.MoveNext
Loop
Nu kommer pris2 att innehålla nästa pris och pris1 innehåller nuvarande pris. Du får givetvis spara alla variabler du behöver på detta sättet. PHP är lite smidigare på detta sättet då man endast behöver spara en array som innehåller all data. Man behöver alltså inte lösa problemet i SQL, blir aningen krångligare än ovan metod skulle jag tro.

Har inte programmerat asp på 4 år så jag fråntar mig allt ansvar för koden.

edit: Jo som gustav säger är det lite smidigare att först göra en hämtning och sedan köra loopen, slipper kontrollen varje varv. Var lite för snabb när jag skrev lösningen.
jimmie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 17:50 #7
Gustaf Gustaf är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 220
Gustaf Gustaf är inte uppkopplad
Medlem
 
Reg.datum: Oct 2005
Inlägg: 220
det är mycket ineffektivt att använda subquerise och eller outer joins. Bättre att göra det i ASP/PHP då när du har en så pass simpel fråga. Det finns inget bra sätt att kolla på nästa rad om kör mySQL, då nästa rad inte är känd när den rad du befinner dig på evalueras.

Förstår inte riktigt varför den föreslagna lösningen inte passade. Du tar fram resultat nr1, sen startar du loopen. Då tar du fram resultat nr2, och har nr1 sparat så att du kan använda bägge. Sedan sparar du nr2 och går vidare till nr3 osv osv.
Gustaf är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-01-09, 20:35 #8
Kristofers avatar
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2004
Inlägg: 1 053
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
Kristofers avatar
 
Reg.datum: Mar 2004
Inlägg: 1 053
Har gjort en ganska ful och bökig lösning utifrån det som sagts här. Var rätt många variabler som behövde sparas om men det funkar bra nu
Kristofer ä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 11:49.

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