Detta fungerar inte för mig av någon anledning. Jag får ett meddelande om att jag har ett fel i SQL-frågan. Tänkte använda detta i en liten nyhetsfunktion där de sex senaste nyheterna listas först följt av en lista på de 50 senaste nyheterna. Några förslag?
Tabellen med nyheterna heter "nyheter" och id:et kallas "nyheterID".
LarsGMedlem sedan dec. 200012 464 inlägg Vilket fel får du?
Generellt:
Nytt problem --> Ny tråd.
Förut var det något fel men av någon anledning fungerar nu SQL-satsen i den bemärkelse att resultat skrivs ut. Dock inte alls som jag vill ha det. Nu skriver den ut alla nyheter trots att SQL-satsen tycks säga att den inte gör det.
Så här ser den ut:
SELECT *
FROM nyheter
WHERE nyheterID NOT IN ('SELECT TOP 10 nyheterID FROM nyheter
ORDER BY nyheterID DESC') ORDER BY nyheterID DESC
Engine^Medlem sedan dec. 20003 887 inlägg Ta bort apostroferna i din subselect.
Engine^ skrev:
Ta bort apostroferna i din subselect.
Hmm, det är verkligen konstigt.
Om jag tar bort apostroferna blir det samma SQL-fel som tidigare:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT TOP 10 nyheterID FROM nyheter ORDER BY nyheterID DESC) O
Och då kör jag alltså den här koden:
SELECT * FROM nyheter WHERE nyheterID NOT IN (SELECT TOP 10 nyheterID FROM nyheter ORDER BY nyheterID DESC) ORDER BY nyheterID DESC
Kör jag denna kod skrivs alla nyheter ut:
SELECT * FROM nyheter WHERE nyheterID NOT IN ('SELECT TOP 10 nyheterID FROM nyheter ORDER BY nyheterID DESC') ORDER BY nyheterID DESC
Konstigt är ordet.
@ndersMedlem sedan juni 200032 969 inlägg TOP stöds inte i MySQL. Du får ge dig på LIMIT.
PeeerMedlem sedan mars 20025 907 inlägg MySQL stödjer inte subselects (förrens i version 4.1?) ta dig en titt på limit istället.
Peeer skrev:
MySQL stödjer inte subselects (förrens i version 4.1?) ta dig en titt på limit istället.
Novis som jag är: hur skulle en sådan se ut som gör samma sak?
PeeerMedlem sedan mars 20025 907 inlägg SELECT * FROM nyheter ORDER BY nyheterID DESC limit 10, 99999999
99999999 är bara ett stort tal för att få med alla poster efter rad 10. Vet inte om man kan skriva det på något "snyggare" sätt.
Nu får jag detta fel i stället:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 50' at line 1
:q
Peeer skrev:
Kan du visa din kod?
Sure! I det här fallet är den genererad i DW MX2004, och ja, jag vet att det är som att svära i kyrkan att säga att man använder det här, men ändå: :D
$maxRows_rsNyheterResten = 50;
$pageNum_rsNyheterResten = 0;
if (isset($_GET['pageNum_rsNyheterResten'])) {
$pageNum_rsNyheterResten = $_GET['pageNum_rsNyheterResten'];
}
$startRow_rsNyheterResten = $pageNum_rsNyheterResten * $maxRows_rsNyheterResten;
mysql_select_db($database_Databasen, $Databasen);
$query_rsNyheterResten = "SELECT * FROM nyheter ORDER BY nyheterID DESC limit 10, 99999999";
$query_limit_rsNyheterResten = sprintf("%s LIMIT %d, %d", $query_rsNyheterResten, $startRow_rsNyheterResten, $maxRows_rsNyheterResten);
$rsNyheterResten = mysql_query($query_limit_rsNyheterResten, $Databasen) or die(mysql_error());
$row_rsNyheterResten = mysql_fetch_assoc($rsNyheterResten);
if (isset($_GET['totalRows_rsNyheterResten'])) {
$totalRows_rsNyheterResten = $_GET['totalRows_rsNyheterResten'];
} else {
$all_rsNyheterResten = mysql_query($query_rsNyheterResten);
$totalRows_rsNyheterResten = mysql_num_rows($all_rsNyheterResten);
}
$totalPages_rsNyheterResten = ceil($totalRows_rsNyheterResten/$maxRows_rsNyheterResten)-1;
Lycka till guys... :r
LarsGMedlem sedan dec. 200012 464 inlägg Nu har du med LIMIT två gånger. Ta bort den första.
PeeerMedlem sedan mars 20025 907 inlägg Gah.. kan du inte skriva ut själva sql-satsen precis innan du exekverar den?
die('sql: ' . $query_limit_rsNyheterResten);
$rsNyheterResten = mysql_query($query_limit_rsNyheterResten, $Databasen) or die(mysql_error());
Nu så!!!
Jag tog bort den andra LIMIT:en och vips så funkade det!
Stort tack till er alla för all hjälp!
Ha en skön helg!