/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySql Sortere et datofelt
Fra : Kurt G


Dato : 25-07-11 16:11

Jeg har et datofelt i en MySql-database. ("dato" af typen date).
Når jeg henter data vil jeg gerne have dem sorteret, så nyeste kommer først.

$strSQL = "Select * From ".$tabelname. " ORDER BY 'dato' DESC";

Det virker ikke!

Hvad gør man så?

Mvh Kurt



 
 
Birger Sørensen (25-07-2011)
Kommentar
Fra : Birger Sørensen


Dato : 25-07-11 19:56

Kurt G udtrykte præcist:
> Jeg har et datofelt i en MySql-database. ("dato" af typen date).
> Når jeg henter data vil jeg gerne have dem sorteret, så nyeste kommer først.
>
> $strSQL = "Select * From ".$tabelname. " ORDER BY 'dato' DESC";
>
> Det virker ikke!
>
> Hvad gør man så?
>
> Mvh Kurt

Prøv at fjerne 'erne - det er et feltnavn, ikke en streng...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kurt G (25-07-2011)
Kommentar
Fra : Kurt G


Dato : 25-07-11 21:15

"Birger Sørensen" <sdc@bbsorensen.com> skrev i en meddelelse
news:4e2dbc47$0$302$14726298@news.sunsite.dk...
> Kurt G udtrykte præcist:
>> Jeg har et datofelt i en MySql-database. ("dato" af typen date).
>> Når jeg henter data vil jeg gerne have dem sorteret, så nyeste kommer
>> først.
>>
>> $strSQL = "Select * From ".$tabelname. " ORDER BY 'dato' DESC";
>>
>> Det virker ikke!
>>
>> Hvad gør man så?
>>
>> Mvh Kurt
>
> Prøv at fjerne 'erne - det er et feltnavn, ikke en streng...
>
> Birger
>
> --
> http://varmeretter.dk - billig, sund og hurtig mad
> http://bbsorensen.dk
>
Det hjalp, men i de eksempler, som jeg fandt på nettet, var der '-er!
Tak, Birger!

Mvh Kurt



Birger Sørensen (25-07-2011)
Kommentar
Fra : Birger Sørensen


Dato : 25-07-11 21:41

Kurt G udtrykte præcist:
> "Birger Sørensen" <sdc@bbsorensen.com> skrev i en meddelelse
> news:4e2dbc47$0$302$14726298@news.sunsite.dk...
>> Kurt G udtrykte præcist:
>>> Jeg har et datofelt i en MySql-database. ("dato" af typen date).
>>> Når jeg henter data vil jeg gerne have dem sorteret, så nyeste kommer
>>> først.
>>>
>>> $strSQL = "Select * From ".$tabelname. " ORDER BY 'dato' DESC";
>>>
>>> Det virker ikke!
>>>
>>> Hvad gør man så?
>>>
>>> Mvh Kurt
>>
>> Prøv at fjerne 'erne - det er et feltnavn, ikke en streng...
>>
>> Birger
>>
>> -- http://varmeretter.dk - billig, sund og hurtig mad
>> http://bbsorensen.dk
>>
> Det hjalp, men i de eksempler, som jeg fandt på nettet, var der '-er!
> Tak, Birger!
>
> Mvh Kurt

Der er ' og der er ´ og man ser dem begge anvendt.
Når du indsætter data, skal der være apostroffer af den ene eller den
anden slags - men når du refererer til feltnavne, må der ikke være
nogen, for så tror SQL at du mener en streng (tekst) - og det går galt,
som du har observeret

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Arne Vajhøj (25-07-2011)
Kommentar
Fra : Arne Vajhøj


Dato : 25-07-11 23:17

On 7/25/2011 4:15 PM, Kurt G wrote:
> "Birger Sørensen"<sdc@bbsorensen.com> skrev i en meddelelse
> news:4e2dbc47$0$302$14726298@news.sunsite.dk...
>> Kurt G udtrykte præcist:
>>> Jeg har et datofelt i en MySql-database. ("dato" af typen date).
>>> Når jeg henter data vil jeg gerne have dem sorteret, så nyeste kommer
>>> først.
>>>
>>> $strSQL = "Select * From ".$tabelname. " ORDER BY 'dato' DESC";
>>>
>>> Det virker ikke!
>>>
>>> Hvad gør man så?
>>>
>>> Mvh Kurt
>>
>> Prøv at fjerne 'erne - det er et feltnavn, ikke en streng...
>>
> Det hjalp, men i de eksempler, som jeg fandt på nettet, var der '-er!
> Tak, Birger!

Jeg tror ikke at der var '' omkring.

Jeg tror at der var `` omkring.

'' putter man omkring tekst konstanter.

`` putter man omkring navne som ikke er valide navne ellers (f.eks.
navne med mellemrum i).

Desværre er der en tendens til at mange tools putter `` også omkring
pæne navne.

Arne




Stig Johansen (26-07-2011)
Kommentar
Fra : Stig Johansen


Dato : 26-07-11 09:52

Arne Vajhøj wrote:

> '' putter man omkring tekst konstanter.
>
> `` putter man omkring navne som ikke er valide navne ellers (f.eks.
> navne med mellemrum i).
>
> Desværre er der en tendens til at mange tools putter `` også omkring
> pæne navne.

Præcis, og det er det man kalder vendor-lockin.

Jeg vil dog påpege:
' bruger man til tekst konstanter.
" bruger man til 'upæne navne'.

Bruger man udelukkende 'pæne navne' er der ikke brug for hverken " eller `
eller [] som MS indførte med MS SQLServer 7.0, og gav FEJL ved fungerende
systemer efter 'opgradering' fra 6.5 til 7.0.

Jeg vil til enhver tid foreslå at man undgår unødige lock-ins, da det
betyder at standard SQL ikke kan bruges på tværs af databaser.

(Nævner *slet* ikke Oracles højst besynderlige Join syntax, som har givet
anledning til meget ekstra arbejde.


--
Med venlig hilsen
Stig Johansen

Arne Vajhøj (29-07-2011)
Kommentar
Fra : Arne Vajhøj


Dato : 29-07-11 01:42

On 7/26/2011 4:51 AM, Stig Johansen wrote:
> Arne Vajhøj wrote:
>
>> '' putter man omkring tekst konstanter.
>>
>> `` putter man omkring navne som ikke er valide navne ellers (f.eks.
>> navne med mellemrum i).
>>
>> Desværre er der en tendens til at mange tools putter `` også omkring
>> pæne navne.
>
> Præcis, og det er det man kalder vendor-lockin.
>
> Jeg vil dog påpege:
> ' bruger man til tekst konstanter.
> " bruger man til 'upæne navne'.

Ifølge ANSI SQL.

Men i MySQL er "xxx" default det samme som 'xxx'.

Man skal slå ANSI quotes til at få standard opførslen.

> Bruger man udelukkende 'pæne navne' er der ikke brug for hverken " eller `
> eller [] som MS indførte med MS SQLServer 7.0, og gav FEJL ved fungerende
> systemer efter 'opgradering' fra 6.5 til 7.0.

[] virker i alle SQLServer versioner til og med 2008 R2.

> Jeg vil til enhver tid foreslå at man undgår unødige lock-ins, da det
> betyder at standard SQL ikke kan bruges på tværs af databaser.

Enig.

> (Nævner *slet* ikke Oracles højst besynderlige Join syntax, som har givet
> anledning til meget ekstra arbejde.

Nu er jeg ikke specielt god til Oracle, men jeg troede at de supporterede
standard join syntax siden 9i.

Arne


Stig Johansen (29-07-2011)
Kommentar
Fra : Stig Johansen


Dato : 29-07-11 10:52

Arne Vajhøj wrote:

> On 7/26/2011 4:51 AM, Stig Johansen wrote:
>>
>> Jeg vil dog påpege:
>> ' bruger man til tekst konstanter.
>> " bruger man til 'upæne navne'.
>
> Ifølge ANSI SQL.

Ja.

> Men i MySQL er "xxx" default det samme som 'xxx'.

Og det betragter jeg som en fejl(kilde).

> Man skal slå ANSI quotes til at få standard opførslen.

Ditto i MS SQLServer, men det burde (IMO) være omvendt.

>> Bruger man udelukkende 'pæne navne' er der ikke brug for hverken " eller
>> ` eller [] som MS indførte med MS SQLServer 7.0, og gav FEJL ved
>> fungerende systemer efter 'opgradering' fra 6.5 til 7.0.
>
> [] virker i alle SQLServer versioner til og med 2008 R2.

Ja, men det var ikke min pointe.

Det var et surt opstød, som jeg husker som i går.

Jeg havde lavet et fungerende DW under MS SQLServer 6.5 med tilhørende
services (udtræk fra mainframe og opdatering).

Efter flere års fejlfri og 24/7 operation blev jeg ringet op, for nu virkede
pludselig ikke.

Programmerne var ikke ændret, så jeg fattede ikke en hujende bjælde, for
kunden havde heller ikke ændret noget.

Godt så - krudte dytten fra Sjælland til Jylland for at se på sagerne.

Ganske rigtigt mystiske fejl om forkert syntax osv - rive mig selv i håret!!

Det viste sige senere at IT-chefen ikke vidste hvad IT afdelingen rodede
med, og en 'kær medarbejder' havde foretaget en (hjernedød) 'opgradering'
fra 6.5 -> 7.0.

Her havde MS foretaget det snedige trick at automatisk disable ANSI Quotes,
og indført de her [ ] - TAK MS!.

Og hvorfor husker jeg det som i går?

Jo, for jeg kunne ikke forklare IT-chefen at det var deres egen skyld, så
jeg måtte selv æde 2 gange færgebiletter, kørsel, benzin samt 12 timers
'investigation' - TAK MS!.

>> (Nævner *slet* ikke Oracles højst besynderlige Join syntax, som har givet
>> anledning til meget ekstra arbejde.
>
> Nu er jeg ikke specielt god til Oracle, men jeg troede at de supporterede
> standard join syntax siden 9i.

Tid er relativt

Når man har været i branchen i > 30 år, så føles alting som i går

Men jo, jeg henviser til pre 9x, hvor jeg bla. lavede noget til 'posten' med
både MS SQLServer (6.5) og Oracle 8.17 (SVJH).

Det var squ lidt irriterende at lave kode a la:
IF Oracle then
SQL = 'SELECT.... oracle syntax' ;
IF MSSQL then
SQL = 'SELECT.... standard syntax' ;

PS: Ved at undgå disse 'lock-ins' med automatisk genererede specialiteter,
kan man til en vis grad holde sig til SQL Standard.

--
Med venlig hilsen
Stig Johansen

Arne Vajhøj (31-10-2011)
Kommentar
Fra : Arne Vajhøj


Dato : 31-10-11 02:00

On 7/29/2011 5:51 AM, Stig Johansen wrote:
> Det var et surt opstød, som jeg husker som i går.
>
> Jeg havde lavet et fungerende DW under MS SQLServer 6.5 med tilhørende
> services (udtræk fra mainframe og opdatering).
>
> Efter flere års fejlfri og 24/7 operation blev jeg ringet op, for nu virkede
> pludselig ikke.
>
> Programmerne var ikke ændret, så jeg fattede ikke en hujende bjælde, for
> kunden havde heller ikke ændret noget.
>
> Godt så - krudte dytten fra Sjælland til Jylland for at se på sagerne.
>
> Ganske rigtigt mystiske fejl om forkert syntax osv - rive mig selv i håret!!
>
> Det viste sige senere at IT-chefen ikke vidste hvad IT afdelingen rodede
> med, og en 'kær medarbejder' havde foretaget en (hjernedød) 'opgradering'
> fra 6.5 -> 7.0.
>
> Her havde MS foretaget det snedige trick at automatisk disable ANSI Quotes,
> og indført de her [ ] - TAK MS!.
>
> Og hvorfor husker jeg det som i går?
>
> Jo, for jeg kunne ikke forklare IT-chefen at det var deres egen skyld, så
> jeg måtte selv æde 2 gange færgebiletter, kørsel, benzin samt 12 timers
> 'investigation' - TAK MS!.

Det kan jeg egentligt godt forstå at han ikke ville betale for.

Du havde valgt at skrive din app så den ikke virkede med
default opsætning og din app testede ikke på om opsætning
var korrekt og udskrev en informativ besked hvis opsætning
ikke var korrekt.

Arne

Stig Johansen (31-10-2011)
Kommentar
Fra : Stig Johansen


Dato : 31-10-11 08:02

Arne Vajhøj wrote:

>> Jo, for jeg kunne ikke forklare IT-chefen at det var deres egen skyld, så
>> jeg måtte selv æde 2 gange færgebiletter, kørsel, benzin samt 12 timers
>> 'investigation' - TAK MS!.
>
> Det kan jeg egentligt godt forstå at han ikke ville betale for.
>
> Du havde valgt at skrive din app så den ikke virkede med
> default opsætning og din app testede ikke på om opsætning
> var korrekt og udskrev en informativ besked hvis opsætning
> ikke var korrekt.

Du har ikke læst hvad jeg skriver.

App'en var lavet til MS SQLServer 6.5, hvor Ansi Quotes var default, og de
der [] eksisterede ikke.

Disse store kunder havde en såkaldt select aftale - tror jeg det hed, så de
fik installations CD'erne før MS SQLServer 2000 var 'til salg' i
offentligheden.

Hvad kan man gøre bedre end at benytte standard SQL? , og hvor skulle jeg
vide fra, at MS ændrede default?

Kunden vidste det ikke engang selv, og opgraderede PRODUKTIONSSYSTEMET i
blinde - ingen test, ingen fallback, ingen info til mig om opdateringen til
en version jeg ikke engang vidste eksisterede endnu.

Svinestregen fra MS var, at ved opgradering fra 6.5 til 7.0 belv Ansi Quotes
DISABLED og [] indsat som default.

Jo, jeg havde skam kodet det med passende fejlmelding, som lød noget a la:
"Invalid syntax ....."

Du kender nok kvaliteten af MS's fejlbeskeder:
"Error: An unexpected error occured"
Eller en anden fra ADO:
"Error: A catastrophiic error occured"

Havde fejlen heddet noget med:
"Error: unexpecter character in pos xyz"

Havde jeg nok fundet problemet tidligere.

Det er fint nok at 'han' disabler Ansi Quotes og sætter [] som default - på
NYE databaser, men det er fammene ikke i orden at han DISABLER Ansi quotes
på EKSISTERENDE databaser.

At nogen kan finde på at opgradere uden info/test er så en helt anden sag.

Ansi Quotes og [] kan sagtens coeksistere, så løsningen var bare at enable
ansi quotes (igen).

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409070
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste