Tabellen verbinden denkfehler ...

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Tabellen verbinden denkfehler ...

Postby Bluescreen2004 » 06. October 2006 08:33

Hi,

das Thema ist zwar bekannt gibt auch viele Anleitung im Netz aber irgentwie kann ich mich nie in das Beipsiel reindenken und es an meines anwenden :cry:

Also es geht darum mehrere Tabellen zu verbinden :

Es gibt die Haupttabelle "fehler" darin sollen alle fehler eingetragen werden, es gibt dann noch eine Tabelle mit den Namen "ort" dort sind eben die orte ausgelagert ;)
In der Tabelle "fehler" steht dann bei den Spaltenamen Ort z.b nur 1,4,2 u.s.w was die IDs aus der Tabelle "ort" darstellen dort steht dann eben:

------------------
|ID | ORT |
------------------
|1 | Hamburg|
|2 | Essen |
|3 | Duisburg|
|4 | Kleve |
------------------
u.s.w

wie bekomme ich es jetzt hin das in der Tabelle "fehler" nicht die gespeicherte ID sondern eben der Name aus der Tabelle Ort angezeigt wird...


habe mal dies versucht was nicht wirklich geht..

$result = mysql_query (" select fehler.fehler_id, fehler.ort_id from fehler left join ort on fehler.ort_id=ort.ort_id");

while ($ds = mysql_fetch_object($result))
{
$fehler_id = $ds -> fehler_id;
$ort_id = $ds -> ort_id;

echo $fehler_id;
echo $ort_id;
}


er gibt dann nur wieder die ID aus rufe ich es dann mit fehler.fehler_id statt fehler_id in der Schleife auf steht dann nur fehler_id dort...

danke

MFG
Bluescreen2004
 
Posts: 4
Joined: 06. October 2006 08:16

Postby Wiedmann » 06. October 2006 08:46

was die IDs aus der Tabelle "ort" darstellen
Code: Select all
-----------
|ID | ORT |
-----------


habe mal dies versucht was nicht wirklich geht..
Code: Select all
$result = mysql_query (" select fehler.fehler_id, fehler.ort_id from fehler left join ort on fehler.ort_id=ort.ort_id");

Wenn sich in der Tabelle die Spalte "ID" nennt, musst du in der Abfrage natürich auch sagen dass du "ID" haben willst und nicht "ort_id".
--> "ID" != "ort_id"

BTW:
Im dir zukünfig Ärger zu ersparen, solltest du DBs, Tabellen und Spalten grundsätzlich kleingeschrieben anlegen. Zumindest muss der Case bei deinen Abfragen mit den Tatsachen übereinstimmen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Bluescreen2004 » 06. October 2006 08:48

oh die id heist ort.id sorry hab ich falsch gepostet :(

MFG
Bluescreen2004
 
Posts: 4
Joined: 06. October 2006 08:16

Postby Wiedmann » 06. October 2006 08:55

oh die id heist ort.id

Und das heist? Poste einfach nochmal, mit den korrekten angaben.

Dabei gleichnochmal eine Zusatzfrage:
Wie sieht denn die Tabelle "fehler" aus?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Bluescreen2004 » 06. October 2006 09:10

Wiedmann wrote:
oh die id heist ort.id

Und das heist? Poste einfach nochmal, mit den korrekten angaben.

Dabei gleichnochmal eine Zusatzfrage:
Wie sieht denn die Tabelle "fehler" aus?


so hoffe das es jetzt übersichtlicher ist :

Image

MFG
Bluescreen2004
 
Posts: 4
Joined: 06. October 2006 08:16

Postby Wiedmann » 06. October 2006 09:30

Sorry, deine wichtigste Frage hab ich ja einfach überlesen :-/
sondern eben der Name aus der Tabelle Ort angezeigt wird...

Dann musst du im SELECT natürlich auch sagen, dass du im Result die Spalte ort.ort mit drinhaben willst (sind ja nur die 2 IDs aufgeführt).
Und im PHP musst du diese Spalte im Resultset einer Variablen zuweisen und mit echo() ausgeben (wie du es ja schon für die 2 IDs machst).
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Bluescreen2004 » 06. October 2006 09:50

Leider zeigt er mir nichts von der Variable $ort an den rest schon an habe es jetzt so geändert (grün dargestellt) :


$result = mysql_query (" select fehler.fehler_id, fehler.ort_id, ort.ort_id, ort.ort from fehler, ort left join ort on fehler.ort_id=ort.ort_id");

while ($ds = mysql_fetch_object($result))
{
$fehler_id = $ds -> fehler_id;
$ort_id = $ds -> ort_id;
$ort = $ds -> bereich;

echo $fehler_id;
echo $ort_id;
echo $ort;
}
Bluescreen2004
 
Posts: 4
Joined: 06. October 2006 08:16

Postby Wiedmann » 06. October 2006 09:56

Nur mal so als Tipp:
Lass dir doch mal das Object $ds mit print_r ausgeben.
(Oder anders: Wie dürfte wohl der Name des Properties bei diesem Select sein?)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 44 guests