[PHP/MySQL] Tables zusammenfügen? - Zufälligen Datensatz auswählen...

Benutzer-42

abgemeldet
20 April 2006
22.497
1.328
So, neue Frage, ich weiß, ich nerve, nicht wahr hacki *g*

also,

ich will nun einige tables zusammenführen

die seite ist scheisse unübersichtlich, was die datenbank angeht, und ich will die ganzen spielebereiche in einen table bringen

oder ist das eher hinderlich, was performance angeht?

aktuell hat jede konsole einen eigenen table, zb

n64
ps2
xbox

wenn ihr mir natürlich sagt, dass es soger sinnvoller ist, jeden table einzeln zu belassen, dann vergesse ich die idee ganz schnell...



und wenn es doch sinnvoll ist, alles in einen table zu stecken, wie bringe ich dann noch eine zusätzliche zeile da rein, weil dann ja alles mit dem jeweiligen system vermerkt werden muss?!

danke mal wieder




Da mein alter Thread weg ist, und ich es damals nicht geschafft hatte, die Änderung in meine Seite einzuarbeiten, bräuchte ich nochmal die Hilfe...

Also, aktuell lasse ich immer den letzten Eintrag in meine Datenbank anzeigen, Beispiel: https://www.game-fire.de/n64list.html
nun will ich zusätzlich quasi eine Review of the Moment machen, also eben eine zufällig ausgewählte herausgeben ...
 
Ohne grosse Erklärung, da mir dazu grad die Zeit fehlt:
Code:
SELECT foo
FROM bar
ORDER BY RAND( UNIX_TIMESTAMP() * UNIX_TIMESTAMP() )
LIMIT 0,1
 
na gut, verwirrt mich nun ganz *g*

ist das nun so, wie tleilax geschrieben hat, richtig, oder ohne den timestamp?

bevor mein hoster mir nämlich sonst wieder wegen db-serverlast einen auf den deckel haut ...
 
wittis-web.de schrieb:
ist das nun so, wie tleilax geschrieben hat, richtig, oder ohne den timestamp?
Es ist genauso richtig, wie ohne die Zeitfunktion.
Es ist mit der Funktion bloß besser ;)
 
Code:
SELECT foo
FROM bar
ORDER BY RAND( UNIX_TIMESTAMP() * UNIX_TIMESTAMP() )
LIMIT 0,1

also muss ich hier foo durch *
und bar durch zb n64_texte ersetzen ?
 
wittis-web.de schrieb:
Code:
SELECT foo
FROM bar
ORDER BY RAND( UNIX_TIMESTAMP() * UNIX_TIMESTAMP() )
LIMIT 0,1

also muss ich hier foo durch *
und bar durch zb n64_texte ersetzen ?
Bitte nicht * sondern nur die Spalten die du brauchst !
;)
 
Zuletzt bearbeitet:
ok , dann hier nur die spalten, die ich zur weiteren verarbeitung benötige?!

wenn ich alle bräuchte, dann trotzdem ohne * ?
 
Code:
$sql="SELECT id, ueberschrift, bild FROM n64_texte ORDER BY id DESC LIMIT 1";

so ist die jetzige abfrage für die einzelne anzeige

ist das so ok?!

und für die zufällige wäre es dann:

Code:
$sql="SELECT id, ueberschrift, bild FROM n64_texte ORDER BY RAND( UNIX_TIMESTAMP() * UNIX_TIMESTAMP() ) LIMIT 0,1";

richtig?
 
Zwischen LIMIT 0, 1 und nur LIMIT 1 gibts keinen Unterschied.

Allgemein: LIMIT n entspricht LIMIT 0, n
 
theHacker schrieb:
Zwischen LIMIT 0, 1 und nur LIMIT 1 gibts keinen Unterschied.

Allgemein: LIMIT n entspricht LIMIT 0, n

ja, das war mir klar, hatte es per copy&paste nur schnell kopiert

aber sind nun die beiden abfragen (außer, dass ich zwei variablen dafür nutzen muss *g*) so sauber?!

denn das script, wie ich es für das gamingportal übernommen habe, ist einfach sauig und ich will es nun, da ich mal wieder ein wenig zeit habe, säubern und unnötigen ballast abwerfen
 
So, neue Frage, ich weiß, ich nerve, nicht wahr hacki *g*

also,

ich will nun einige tables zusammenführen

die seite ist scheisse unübersichtlich, was die datenbank angeht, und ich will die ganzen spielebereiche in einen table bringen

oder ist das eher hinderlich, was performance angeht?

aktuell hat jede konsole einen eigenen table, zb

n64
ps2
xbox

wenn ihr mir natürlich sagt, dass es soger sinnvoller ist, jeden table einzeln zu belassen, dann vergesse ich die idee ganz schnell...



und wenn es doch sinnvoll ist, alles in einen table zu stecken, wie bringe ich dann noch eine zusätzliche zeile da rein, weil dann ja alles mit dem jeweiligen system vermerkt werden muss?!

danke mal wieder
 
wittis-web.de schrieb:
ich weiß, ich nerve, nicht wahr hacki *g*
Ich glaub, du kriegst hier bald Hausverbot :ugly:
wittis-web.de schrieb:
aktuell hat jede konsole einen eigenen table, zb

n64
ps2
xbox
Aber dieselbe Tabellenstruktur ? Sch***e, machs neu !

Und zwar legst du einfach ein zusätzliches Feld in die Tabelle rein.
Du hast die Wahl zwischen
a) konsole_typ INT FOREIGN_KEY (dazu bräuchstes du nochmal ne Tabelle; zwar die korrekteste Lösung, ich würd sie aber trotzdem nicht empfehlen)
b) konsole_typ INT (am einfachsten, aber unübersichtlich)
c) konsole_typ ENUM('n64','ps2','xbox') (<-- machs so)

Die Daten trägst du mit INSERT INTO ... SELECT rüber:

INSERT INTO komplett_tabelle (feld1,feld2,feld3,konsole_typ,feld4) SELECT feld1,feld2,feld3,'n64',feld4 FROM tabelle_xbox

Und das eben für jede Tabelle. Die Felder entsprechend anpassen und das neue Extrafeld korrekt setzen.

Beim Auswählen der Daten kommt halt noch ein zusätzliches
WHERE konsole_typ='xbox'
dazu, um nicht alle Zeilen, sondern nur die, für die entsprechende Konsole, zu bekommen.
 
ich geb dir gleich hausverbot, dann geh ich bei mone petzen ...

ok,...
ist es denn sinnvoll, alles in eine tabelle zu schieben, oder ist es vielleicht doch besser, alles einzeln zu lassen

aktuell sind ja noch nicht viele einträge, wenn es aber irgendwann mehr wird, so dass es dann über 1000 einträge werden, könnte die tabelle vielleicht doch zu umfangreich sein?!
 
wittis-web.de schrieb:
ok,...
ist es denn sinnvoll, alles in eine tabelle zu schieben, oder ist es vielleicht doch besser, alles einzeln zu lassen
Hab ich schon beantwortet.
Du musst (wenn du den Normalformen entsprechend arbeitest) sogar alles in eine Tabelle schieben, wenn ich dich richtig verstanden habe.
Drum nochmal die Frage: Die Tabellen für XBox, N64 etc. sehen alle gleich aus ?
wittis-web.de schrieb:
aktuell sind ja noch nicht viele einträge, wenn es aber irgendwann mehr wird, so dass es dann über 1000 einträge werden, könnte die tabelle vielleicht doch zu umfangreich sein?!
Das ist egal. MySQL ist dafür aus, viele viele Tausend bis Millionen Einträge zu verwalten. Es ist also besser für die Datenbank 5000 Einträge aus einer Tabelle zu ziehen, als 5x 1000 Einträge aus 5 verschiedenen Tabellen.
 
ja, die tabellen sind im prinzip alle gleich, ab und an ist mal ein feld mehr drin, ungenutzt, was man also beim kopieren dann rausfallen lassen könnte

ok, ich werde mich mal am wochenende drum kümmern, da ich ausnahmsweise keinen markt und keine messe dieses wochenende habe, freiiii *g*

da kann ich mal ganz ausgiebig wieder wenigstens ein paar kleine änderungen in die sache bringen, um dann zb auch die antsprechenden auswahldateien auf jeweils nur 3 zu beschränken

denn aktuel habe ich für jede konsole eine datei, was dann ja wegfiele, weil ich dann alles aus einer tabelle hole, was dann die dateianzahl auf dem server erheblich übersichtlicher macht

ok, ich werde dich dann am wochenende weiter löschern .. :evil: versprochen (oder eher angedroht :?: )