Zwei-Tabellen, aber mit gleichen Werten

Feldhofe

Erfahrenes Mitglied
Hallo!

Ich habe auch so ein Problem mit zwei Tabellen, die wie eine behandelt werden sollen:
Ich will aus Tabelle "deutsch" zahl, interpret, titel selektieren, aus Tabelle "englisch" ebenfalls.

Die Ausgabe soll zeilenweise erfolgen, und zwar nach Interpret alphabetsich.
Dabei soll kein Unterscheid gemacht werden, ob der Datensatz aus "deutsch" oder "englisch" kam.

Geht das überhaupt??

Gruß
Feldhofe
 
Wie wäre es, wenn Du alles in eine Tabelle packst und zusätzlich eine Feld "sprache" einfügst. So hast Du nicht das Problem, dass Du die beiden Tabellen joinen musst.

Gruß
evoc
 
Zuletzt bearbeitet:
So auf Anhieb würd ich einfach mal folgendes versuchen:

PHP:
SELECT zahl, interpret, titel FROM deutsch OR englisch ORDER BY interpret ASC
oder
PHP:
SELECT zahl, interpret, titel FROM deutsch , englisch ORDER BY interpret ASC

Also ich geb da absolut keine Garantie drauf, würd ich nur so spontan mal versuchen.
Ansonste wirklich so machen, wie evoc vorgeschlagen hat, mit einem PHP-Script, das das Erstellen und Eintragen übernimmt, geht das auch sehr flott.

scope.
 
Hi!

Beide Vorschläge für SELECT-Anweisungen rufen leider Error-Meldungen hervor.

Aber die Idee mit dem Umkopieren ist wirklich gut, bloß wie mache ich sowas? Es handelt sich doch schon um abertausende Datensätze... :)

Es gibt in beiden Tabellen die Felder "zahl"(ID), "interpret", "titel", "text", "verfasser" und "count".
Wie macht man das?

Gruß Feldhofe
 
PHP:
mysql_query("CREATE TABLE music_db (
zahl INT (20) NOT NULL AUTO_INCREMENT,
interpret blob not null,
titel blob not null,
text blob NOT NULL,
verfasser blob NOT NULL,
count INT (10),
lang blob NOT NULL,
PRIMARY KEY (zahl)
)",$db_connect);
$query = mysql_query("SELECT * FROM tbl_dt",$db_connect);
while ($save = mysql_fetch_array($query))
    mysql_query("INSERT INTO music_db (interpret,titel,text,verfasser,count,lang) VALUES ('$save[interpret]','$save[titel]','$save[text]','$save[verfasser]','$save[count]','german')",$db);

$query = mysql_query("SELECT * FROM tbl_engl",$db_connect);
while ($save = mysql_fetch_array($query))
    mysql_query("INSERT INTO music_db (interpret,titel,text,verfasser,count,lang) VALUES ('$save[interpret]','$save[titel]','$save[text]','$save[verfasser]','$save[count]','english')",$db);
Ich übernehme keine Garantie für Richtigkeit ;)
Aber so in etwa würde das sicher funzen, des Umspeichern. Kann sein dass es auch mit PHPMyAdmin geht, aber leider weis ich des grad nicht :p

Grüße, Morph
 
Hmmm...hab jetzt so angefangen, um erstmal das allerste Result der englisch-Tabelle zu übertragen (leider vergeblich).
Tabelle steht schon, aber er trägt nix ein...was ist daran falsch??

PHP:
<?

include("db_open_close.php");
db_open ();

$zahl=1;
$result = mysql_query("select interpret,titel,etext,verfasser,count,zahl from englisch where zahl='$zahl'");

// Ausgabe der Datenbankwerte
while ($row = mysql_fetch_row($result))

      {
$interpret=htmlentities($row[0]);
$titel=htmlentities($row[1]);
$text=htmlentities($row[2]);
$text = ereg_replace("'","'",$text);
$verfasser=htmlentities($row[3]);
$count=htmlentities($row[4]);

//$row[2]=nl2br($row[2]);
 print"<font face=verdana class=gross><b>
 $interpret: \"$titel\"</b></font><br>&nbsp;<br>
 $text
</td></tr>
<tr><td align=right>
<br>
(hinzugefügt von $verfasser)<br>
<br>
$count mal aufgerufen.";

mysql_query("INSERT INTO songtexte VALUES (1,$interpret,$titel,$text,$verfasser,$count, eng)");
}

?>
 
Statt mysql_query("INSERT INTO songtexte VALUES (1,$interpret,$titel,$text,$verfasser,$count, eng)");
nimm
mysql_query("INSERT INTO songtexte (zahl,interpret,titel,text,verfasser,count,language) VALUES (1,'$interpret','$titel','$text','$verfasser','$count','eng')");
Hoffe das hilft :)

Grüße, Morph
 
Nein, das macht leider keinen Unterschied!
Wenn ich aber statt der Variable $text gleich etwas hinschreibe (so: mysql_query("INSERT INTO songtexte (zahl,interpret,titel,text,verfasser,count,language) VALUES (1,'$interpret','$titel','fubfubfub','$verfasser','$count','eng')");
dann geht es eigenartiger Weise, obwohl ich den Text genau wie alle anderen Variablen behandelt habe.

Feldhofe

P.S: ABer ich glaube eigentlich, dass es doch praktischer wäre, zwei Tabellen mit englisch/deutsch getrennt zu haben.....vielleicht hat ja jemand noch eine Idee, wie man das machen könnte?
 
Nein, leider geht das mit zwei Tabellen nicht wirklich.
Funktionen wie z.B. Union beherrscht MySQL nicht. Deswegen kannst Du die beiden Tabellen, zumindest nicht mit reinem SQL, mischen.

Du könntest zwei Abfragen machen und die dann in einer Schleife sequentiell durchabreiten. Problem dabei ist allerdings, dass dann für jeden Song bzw. Interpreten ein Datensatz in Englisch und einer in Deutsch vorliegt.

Datenbanktechnisch ist das verwalten in einer Tabelle das sinnvollste, da du so z.B. nur eine Tabelle pflegen musst, falls du mal eine Änderungen an der Struktur vornimmst.

Wieso sollte es praktischer sein?

Gruß
evoc

PS: Schöne Handylogo-Seite, sieht sehr gut aus!
 
Zuletzt bearbeitet:
Zurück