php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-06-2007, 20:57
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard [MySQL 4.1] Welcher Feldtyp ist der richtige?

Hallo Leute,

sicher eine simple Sache, nur ich brings wieder mal nicht auf die Reihe
Es geht darum den richtigen Feldtyp einer Spalte zuzuordnen.

Um was es geht?
Ich habe in einer Spalte eigendlich ein Datum stehen und zwar im Format MM.YYYY

Mit Char bzw. Varchar wollt ich nicht arbeiten, hab ich halt decimal(2,4) genommen.
Tja und jetzt hab ich den Furz beinander, weil ich genau nach dieser Spalte natürlich sortieren muß, was er ja nicht macht weil decimal
So bekomme ich als Ausgabe bei einen ORDER BY spalte ASC:
01.2007
02.2006
02.2007
03.2001
03.2006

anstelle
03.2001
02.2006
03.2006
01.2007
02.2007

Jetzt hätte ich es auch mit dem Typ DATE versucht, aber da ist das Format YYYY-MM-DD - also verkehrt und DD hab ich ja keine.

Wie müsste ich jetzt meinen Feldtyp festlegen, damit ich das sauber hinbekomme?

lg. und vielen Dank
Werner
Mit Zitat antworten
  #2 (permalink)  
Alt 27-06-2007, 21:01
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann nimm doch immer den ersten eines monats.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-06-2007, 22:13
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja das wäre eine Idee gewesen die ich heute auch schon hatte.
Ich glaub ich werde auch um das nicht herumkommen, ausser MySQL bietet mir eine solche Sortiermöglichkeit, wie es das auch bei den ARRAY's gibt.
KSORT, ASORT usw.
Mit Zitat antworten
  #4 (permalink)  
Alt 27-06-2007, 22:18
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

was soll daran besser sein?
Mit Zitat antworten
  #5 (permalink)  
Alt 27-06-2007, 22:18
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann mach doch so

2001.03
2002.01
...

ist zwar etwas "von hinten durch die Brust ins Auge" aber es tut genau das was du willst
Mit Zitat antworten
  #6 (permalink)  
Alt 27-06-2007, 22:56
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
dann mach doch so

2001.03
2002.01
...

ist zwar etwas "von hinten durch die Brust ins Auge" aber es tut genau das was du willst
Hmmm.....?
Die Idee wäre gar nicht so schlecht - muß ich zwar in einigen Scripten Änderungen vornehmen, aber das täte ich in Kauf nehmen.

Kannst Du mir bitte noch eine Kleinigkeit verraten?
Da ich bereits über 300.000 Datensätze eben in diesen Format vorliegen habe (MM.YYYY), ist hier ein manuelles ändern "fast" unmöglich.
Ja ich weiß - früher drann denken
Aber wenn das Jeder machen würde, gäbe es solche Foren nicht, oder?
Aber gibt es eine Möglichkeit mit einer UPDATE Anweisung die vorhandenen Einträge zu vertauschen? Also MM.YYYY in YYYY.MM

Klarerweise müsste ich zuerst beim TYP die Länge ändern von decimal(2,4) auf decimal(4,4) und dann auf decimal(4,2), damit mir keine Daten verloren gehen.

Da wäre mir echt geholfen und ich kann die unzähligen LIKE's für das Jahr endgültig den Jordan runterschwemmen und so wieder performanter sein.
Denn jetzt mache ich ja ein
PHP-Code:
SELECT spalten FROM tabelle WHERE spalte LIKE '%YYYY1%' OR 
spalte LIKE '%YYYY2%' OR 
spalte LIKE '%YYYY3%' OR 
spalte LIKE '%YYYY4%' OR usw.... 
Danke vielmals
lg.
Werner
Mit Zitat antworten
  #7 (permalink)  
Alt 27-06-2007, 23:00
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum nicht date?
Mit Zitat antworten
  #8 (permalink)  
Alt 27-06-2007, 23:07
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von penizillin
warum nicht date?
Naja, ich denke das Problem liegt daran, dass ich beits jede Menge Daten habe im Format MM.YYYY.
Wenn ich den TYP auf DATE ändere bekomme ich bei allen Datensätzen 0000-00-00 eingetragen und diese Daten wären futsch, was einer mittelgroßen Katastrophe gleichkommen würde.
Es handelt sich bei diesen Daten um Erstzulassungsdaten von KFZ-Fahrzeugen - und da hast Du nun mal nur das Monat und das Jahr, aber keinen Tag.
Mit Zitat antworten
  #9 (permalink)  
Alt 27-06-2007, 23:07
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

probiere

update tbl set col=concat(right(col,4),'.',left(col,2))

eventuell muss du auch noch die Spalte in varchar konvertieren, wenn left und right meckern
Mit Zitat antworten
  #10 (permalink)  
Alt 27-06-2007, 23:10
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von web4free
Naja, ich denke das Problem liegt daran, dass ich beits jede Menge Daten habe im Format MM.YYYY.
Wenn ich den TYP auf DATE ändere bekomme ich bei allen Datensätzen 0000-00-00 eingetragen und diese Daten wären futsch, was einer mittelgroßen Katastrophe gleichkommen würde.
Es handelt sich bei diesen Daten um Erstzulassungsdaten von KFZ-Fahrzeugen - und da hast Du nun mal nur das Monat und das Jahr, aber keinen Tag.


neue spalte anlegen, update, alte spalte löschen. wo ist das problem?

wenn du keinen tag brauchst, trage den ersten ein.
Mit Zitat antworten
  #11 (permalink)  
Alt 27-06-2007, 23:24
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
probiere

update tbl set col=concat(right(col,4),'.',left(col,2))

eventuell muss du auch noch die Spalte in varchar konvertieren, wenn left und right meckern
GEIL!!!
Beim Typ decimal hat er mir alles auf 99.9999 gesetzt
Änderung des Typen auch VARCHAR hat dann das Ergebnis gebracht.

Ab heute bist Du im monatlichen Abendgebet mit eingeschlossen
Hast mir schon viel geholfen in diesem Forum, danke schön.

Ich gehe aber eh in der richtigen Annahme dass decimal(5,2) VARCHAR(7) vorzuziehen ist?

Vielen Dank jedenfalls.
Ich hoffe ich kann auch mal helfen!

lg.
Werner
Mit Zitat antworten
  #12 (permalink)  
Alt 27-06-2007, 23:30
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ne sinnvoller Erklärung, warum du nicht Date benutzt hast, hast du aber immer noch nicht? Gut, du kannst größtenteils ohnehin auf die Date-Funktionen verzichten, aber ein Decimal ist es deswegen noch lange nicht.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:23 Uhr.