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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 08-09-2009, 01:17
mopf
 Registrierter Benutzer
Links : Onlinestatus : mopf ist offline
Registriert seit: Sep 2009
Beiträge: 3
mopf befindet sich auf einem aufstrebenden Ast
Standard auto increment datensatzweise umgehen

moin,
ich habe das problem, dass ich eine tabelle habe, in der ich sehr gerne eine gewisse anzahl an datensätzen, über die id sortiert, immer am ende der tabelle haben würde.

sieht folgendermaßen aus:
1
2
.
.
295
.
1000000
1000001


ich würde nun gerne wissen, ob es irgendwie möglich ist das auto increment ignorieren zu lassen, dass es die 1mio werte gibt und stattdessen weiterhin brav in den niedrigeren werten incrementieren zu lassen.

die datensätze werden über die id identifiziert und es ist halt wichtig, dass die werte mit der 1 mio id immer und ausschließlich sie am ende der tabelle stehen. die ids werden auch außerhalb der tabelle nicht gespeichert, dementsprechend ist der wert der id im prinzip egal, abgesehen davon, dass diese datensätze halt am ende stehen müssen.

mfg

Geändert von mopf (08-09-2009 um 01:28 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 08-09-2009, 01:34
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

es ist prinzipiell irgendwie möglich, aber warum sollte man sowas wollen? Willst du nicht vielleicht lieber noch eine Spalte hinzufügen, in der du sowas machst?

Zurück zum Thema. Ich beziehe mich dabei auf InnoDB, die anderen benutze ich fast nie und bin daher nicht sicher, ob es da auch gilt.

Solange der MySQL Server läuft, benutzt er den auto_increment-Wert fortlaufend, also unterhalb deiner großen Extra-Werte. Wenn du ihn neu startest, initialisiert er sich jedoch mit dem größten in der Tabelle enthaltenen Wert und würde dann ab dort weiterzählen. Also müsstest du dafür Sorge tragen, nach jedem Serverneustart, den auto_increment-Zähler wieder nach unten zu drücken.

Ich halte das, wie gesagt, für ziemlich daneben und rate dringendst dazu, das DB-Design zu überdenken. Wenn es nur um die Sortierung der Ausgabe geht, kann man doch auch mit order by die Reihenfolge bestimmen und dabei die Primärschlüsselspalte als Sekundärsortierung verwenden. Damit würdest du nur noch eine boolean Spalte für die "hohen" Datensätze benötigen, die dann als Primärsortierung herhält:

Code:
id, is_at_end
--------------
1, 0
2, 0
3, 1
4, 1
5, 0
6, 0
Code:
select * from tabelle order by is_at_end, id
ergibt
Code:
1, 0
2, 0
5, 0
6, 0
3, 1
4, 1
oder

Code:
select 1000000 * is_at_end + id as id2 from tabelle order by id2
ergibt
Code:
1
2
5
6
1000003
1000004
Gruß,

Anja

Geändert von AmicaNoctis (08-09-2009 um 01:42 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 08-09-2009, 10:12
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

IDs sollten nur zur Identifizierung dienen und zu sonst nichts. Bitte keine IDs für irgendwas anderes missbrauchen. Das wird früher oder später zur Sackgasse. Wenn du einen Wert zur Anordnung brauchst, dann erstell eine neue Spalte dafür.
Mit Zitat antworten
  #4 (permalink)  
Alt 08-09-2009, 11:05
mopf
 Registrierter Benutzer
Links : Onlinestatus : mopf ist offline
Registriert seit: Sep 2009
Beiträge: 3
mopf befindet sich auf einem aufstrebenden Ast
Standard

hoi, erstmal schonmal danke.
ich weiß, dass ids nur der identifizierung dienen, tun sie in dem fall prinzipiell auch, sie sollten halt nur was zusätzliches machen..

und zu amica, daran hatte ich bislang noch nicht gedacht, ich werde mal schauen, ob und wie ich das realisiert bekomme, dann packe ich mir meine enddatensätze der übersichtlichkeit halber an den anfang und sortiere nach dem booleanschen primärschlüssel.

theoretisch sollte er dann als sekundär sortierung wieder die ids nutzen, oder?

und sowohl order by, als auch select from helfen mir in dieser sache relativ wenig, da es nicht drauf ankommt, wie ich das aus der tabelel raushole, sondern wie es in der tabelle drinsteht :/

auf die ausgabe habe ich leider keinerlei einfluss..

mfg

edit:
danke, hat geklappt

Geändert von mopf (08-09-2009 um 11:18 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 08-09-2009, 11:09
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mopf Beitrag anzeigen
hoi, erstmal schonmal danke.
ich weiß, dass ids nur der identifizierung dienen, tun sie in dem fall prinzipiell auch, sie sollten halt nur was zusätzliches machen..
Nein. IDs sollen nichts zusätzlich machen. Nur identifizieren. Aus.
Mit Zitat antworten
  #6 (permalink)  
Alt 08-09-2009, 11:10
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von mopf Beitrag anzeigen
sie sollten halt nur was zusätzliches machen..
Sollen sie eben nicht

Zitat:
Zitat von mopf Beitrag anzeigen
und sortiere nach dem booleanschen primärschlüssel.
Das ist kein Primärschlüssel, nur ne zusätzliche Spalte. Mit nem boolschen Primärschlüssel dürfte es ja nur zwei Datensätze geben

Zitat:
Zitat von mopf Beitrag anzeigen
theoretisch sollte er dann als sekundär sortierung wieder die ids nutzen, oder?
Genau!

Zitat:
Zitat von mopf Beitrag anzeigen
und sowohl order by, als auch select from helfen mir in dieser sache relativ wenig, da es nicht drauf ankommt, wie ich das aus der tabelel raushole, sondern wie es in der tabelle drinsteht :/

auf die ausgabe habe ich leider keinleri einfluss..
Wie Datensätze in einer Tabelle drinstehen, ist wurschtegal. Du siehst ja nie, wie sie drin stehen. Sobald du sie siehst, hast du sie schon rausgeholt. Denk mal drüber nach...

Wieso hast du keinen Einfluss auf die Ausgabe?

Wenn das stimmt, dann mach dir doch ein View mit dem besprochenen order by und benutze das für die Ausgabe statt der eigentlichen Tabelle.

Gruß,

Anja
Mit Zitat antworten
  #7 (permalink)  
Alt 08-09-2009, 11:22
mopf
 Registrierter Benutzer
Links : Onlinestatus : mopf ist offline
Registriert seit: Sep 2009
Beiträge: 3
mopf befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Nein. IDs sollen nichts zusätzlich machen. Nur identifizieren. Aus.
ist mir egal :P
außerdem tun sies jetzt wieder aussschließlich, wobei ich gerade überlege, ob sie denn zumindest außerhalb der tabelle irgendwo abgefragt werden...

außerdem klappt es ja nu.
danke nochmal

mfg
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
auto increment, mysql, umgehen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
id, auto increment bweichel SQL / Datenbanken 2 14-11-2006 21:11
[MySQL] Auto Increment jonas01 SQL / Datenbanken 6 08-11-2005 13:04
mysql, id auto increment? Enerkin PHP Developer Forum 17 20-12-2004 13:28
auto increment Kieferarzt SQL / Datenbanken 5 08-01-2004 11:54
Auto Increment - Wie beeinflussbar? el_espiritu SQL / Datenbanken 5 18-09-2003 16:35

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

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
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:39 Uhr.