Just nu i M3-nätverket
Jump to content

select top???


detrex

Recommended Posts

Hej!!!

Ur min mssql databas vill jag bara visa posterna

t.ex post 30-59 den ska alltså börja räkna från

post 30 och räkna upp till 59

i mysql kunde man skriva select * from databas limit 30,59 men eftersom inte limit fungerar i mssql

så undrar jag om någon har en lösning på detta så

vore det kanon håller på att bli gråhårig =)

 

//stefan

 

Link to comment
Share on other sites

Magnus Ahlkvist

SELECT top 30 * from (select top 60 * from tabellen order by id) order by id desc

 

detta tar fram post 31-60, sorterat efter kolumnen ID.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Link to comment
Share on other sites

jag får följande felmeddelande när jag kör

$sql2 = "SELECT top 30 * from (select top 60 * from telefonlista order by efternamn) order by efternamn desc";

 

Felmeddelande:

Warning: MS SQL message: Incorrect syntax near the keyword 'order'. (severity 15) in C:\Inetpub\wwwroot\test\skrivut.php on line 13

 

//stefan

 

Link to comment
Share on other sites

MattiasCanberger

Du måste ge din derived table ett alias

"SELECT top 30 * from (select top 60 * from telefonlista order by efternamn) AS dt order by efternamn desc";

 

Link to comment
Share on other sites

tackar detta löste nästan mitt problem

jag ska visa koden:

 

$sql = "select top 66 with ties * from telefonlista order by efternamn";

 

$sql2 = "SELECT top 66 with ties * from (select top 300 * from telefonlista order by efternamn) AS dt order by efternamn desc";

 

$resultat = mssql_query($sql);

$resultat1 = mssql_query($sql2);

 

jag har en databas med ett antal poster i som jag vill visa upp på samma sida

men i två olika tabeller brevid varann

alltså i första tabellen vill jag att den ska visa posten 1-66 och i andra tabellen resten av posterna över 66

 

så här tar jag ut i tabellen

while($rad=mssql_fetch_array($resultat)){

echo" <tr>

<td width=\"20%\">$rad[telnr]</td>

<td width=\"82%\">$rad[efternamn] $rad[namn]</td>

</tr>";}?>

 

sen en tabell brevid

<?

while($rad1=mssql_fetch_array($resultat1)){

echo" <tr>

<td width=\"20%\">$rad1[telnr]</td>

<td width=\"82%\">$rad1[efternamn] $rad1[namn]</td>

</tr>";}?>

kanske lite dumt formulerat men

hoppas någon har en lösning

 

//stefan

 

 

Link to comment
Share on other sites

Magnus Ahlkvist

Nåt sånt här?

<table>
<tr valign="TOP">
<td>
<table>
<?while($rad=mssql_fetch_array($resultat)){
echo" <tr> 
<td width=\"20%\">$rad[telnr]</td>
<td width=\"82%\">$rad[efternamn] $rad[namn]</td>
</tr>";}?>
</table> 
</td>
<td>
<table>
<?
while($rad1=mssql_fetch_array($resultat1)){
echo" <tr> 
<td width=\"20%\">$rad1[telnr]</td>
<td width=\"82%\">$rad1[efternamn] $rad1[namn]</td>
</tr>";}?>
</table>
</td>
</tr>
</table>

 

--

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Link to comment
Share on other sites

Jo men det är inte det som är problemet

jag har en databas med ett antal poster i som

jag vill ha dom första 66 posterna i första html tabellen och resten av posterna i den andra html tabellen det är sql frågan som är lite klurig

 

Link to comment
Share on other sites

Magnus Ahlkvist

Aha, då är jag med.

 

finns det någon primärnyckel i tabellen (en identity-kolumn eller liknande)?

 

I så fall kan man ju göra:

 

sql = "select top 66 with ties * from telefonlista WHERE id not in (SELECT top 66 with ties ID from (select top 300 id from telefonlista order by efternamn) as dt order by efternamn desc)order by efternamn"

 

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

[inlägget ändrat 2003-01-14 13:28:37 av Magnus Ahlkvist]

Link to comment
Share on other sites

Jo jag förstår din idé... men den funka

inte vet du vad som kan vara galet med frågan?? mitt primär fält heter id

 

//stefan

 

Link to comment
Share on other sites

Jag tänkte något sånt här

select * from telefonlista where id not in ( select top 66 * from telefonlista order by efternamn) order by efternamn;

 

men det fungerade inte någon som vet

varför ?????

 

Link to comment
Share on other sites

Magnus Ahlkvist

du kan inte göra "where id not in (select top 66 *...)". Om du har en SUB-select i WHERE-klausulen får den bara innehålla ett fält i SELECT-klausulen.

Alltså: where id not in (select top 66 id...)

 

Får du något felmeddelande i queryn som jag föreslog, eller bara fel resultat?

 

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Link to comment
Share on other sites

jag fixa de jag tog

 

select * from telefonlista where id not in (select top 66 id from telefonlista order by efternamn) order by efternamn

faan va gött

 

tack magnus för din hjälp var till

stor nytta!! tack så mycke

 

//stefan

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...