ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
1026
1026
EMPFEHLEN
-
Hallo, ich arbeite gerade an einem Datenbankdesign und stehe vor einem Problem.
Ich möchte folgende Verbindungstabelle kreieren:
patch:
patchid | refid | tabid
1 | 1 | 2
2 | 2 | 2
Alle 3 Spalten zusammen ergeben den Primärschlüssel.
Tabellen:
tabid | name
1 | telefon (ist ein Tabellenname)
2 | pc (ist ein Tabellenname)
pc:
id | name
1 | Hans
2 | Werner
Möchte jetzt aus der ersten Tabelle "patch" die ID auslesen um aus der Tabelle "Tabellen" den Namen der Tabelle zu erhalten. Ist ja kein Problem!
Die Tabelle heißt also pc.Code sql:1
SELECT name FROM tabellen WHERE ID =(SELECT tabid FROM patch WHERE pachtid = 1)
Aus Tabelle pc möchte ich nun anhand der refid aus Tabelle "patch" den Namen aus Tab. pc erhalten.
Code sql:1 2 3 4
SELECT name FROM (SELECT name FROM tabellen WHERE ID =(SELECT tabid FROM patch WHERE pachtid = 1)) AS tmp WHERE ID =(SELECT refid FROM pacht WHERE pachtid = 1)
Bekomme nur den Fehler: #1054 - Unknown column 'name' in 'field list'
Ich hoffe jemand versteht meinen Ansatz und kann mir einen Rat geben, wie man dieses Problem lösen kann.Geändert von Steusi (09.09.10 um 14:27 Uhr)
Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Geht mWn nur mit zusammensetzen...
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
--Den Tabellennamen @tab und die ReferenzId @refid setzen SELECT @tab:=t.name, @refid := p.refid FROM tabellen AS t INNER JOIN patch AS p ON t.ID = p.tabid WHERE p.patchid = 1; --SQL-Statement mit @tab als Tabellennemane zusammensetzen SET @SQL = CONCAT('SELECT * FROM ', @tab, ' WHERE id = ?'); --SQL-Statement für die Ausführung vorbereiten PREPARE stmt FROM @SQL; --SQL-Statement mit der @refid ausführen EXECUTE stmt USING @refid;
Geändert von Yaslaw (09.09.10 um 14:36 Uhr)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke yaslaw, hast mir wieder mal Methoden gezeigt, wo ich im Handbuch nach schauen musste.
Nachdem ich nun verstehe, was du dort machst entdecke ich keinen Fehler, trotzdem erhalte ich keine gewünschte Ausgabe bei PHPMyAdmin, sondern nur die Anzahl der gefundenen Zeilen.
Einmal auf das wesentliche gekürzt:
Code sql:1 2 3 4 5
SET @tab := 'tbl_pc';# MySQL lieferte ein leeres Resultat zurück (d.h. NULL Zeilen). SET @refid :=1;# MySQL lieferte ein leeres Resultat zurück (d.h. NULL Zeilen). SET @SQL = CONCAT( 'SELECT * FROM ', @tab , ' WHERE ID = ', @refid ) ;# MySQL lieferte ein leeres Resultat zurück (d.h. NULL Zeilen). PREPARE stmt FROM @SQL ;# MySQL lieferte ein leeres Resultat zurück (d.h. NULL Zeilen). EXECUTE stmt;# Zeilen: 1
Kannst du mir dies erklären? Also ich denke nicht das es im PHP Script später anders sein wird oder?
Wie gesagt ich bin erst beim Datenbankentwurf, möchte natürlich auch ein Modell entwickeln, welches ich gut abfragen kann.Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
-
Ich habe mit HeidiSql Portable geübt und da gibts die Zeile aus.
Entweder du packst das alles in eine Stored Procedure oder du baust dein Query in PHP zusammen.
1) Abfrage nach dem Tabellennamen
2) SQL-String zusammensetzen
3) Abfragen der Daten
PHP-Code:<?php
include('connect.php');
$sql =
<<<EOT
SELECT
t.name,
p.refid
FROM
tabellen AS t
INNER JOIN patch AS p
ON t.ID = p.tabid
WHERE
p.patchid = 1;
EOT;
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$sql = "SELECT * FROM {$row['name']} WHERE id = {$row['refid']}";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
var_dump($row);
?>Geändert von Yaslaw (09.09.10 um 16:27 Uhr)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Der Weg über PHP ist mir auch bewusst, wollte nur so viel wie Möglich von der DB erledigen lassen. Ich werde es dann noch einmal testen, wenn es so weit ist. Vielen Dank für den Ideenansatz und den fertigen Code!
Gruß Steusi
Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
PHP-Code:$fehler = "dummer Tippfehler";
echo("Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!");
Ähnliche Themen
-
Prototype Datenbank-Wert in Variable speichern
Von user2580 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 12.04.09, 23:18 -
Wert aus mySQL-Tabelle auslesen und je nach Wert vorher definierten Text ausgeben
Von RaffivK im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 03.10.08, 15:52 -
Referenz in einer Variable speichern, nicht den Wert
Von Marius Heil im Forum Flash PlattformAntworten: 1Letzter Beitrag: 02.08.07, 09:08 -
Wert in dem global Variable speichern
Von Pyata im Forum C/C++Antworten: 0Letzter Beitrag: 11.05.07, 14:52 -
MYSQL Tabelle mit Wert belegen?
Von masta im Forum PHPAntworten: 2Letzter Beitrag: 16.12.02, 16:48





Zitieren

Login





