 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
12.10.2004, 15:19
|
#1
|
|
TP-Junior
Registriert seit: Sep 2004
|
Verschachtelte Datenbankabfrage?
Hi,
ich habe folgendes Problem.
Aus Tabelle 1 sollen die Daten x,y geholt werden. In Abhängigkeit von y aus Tabelle 1, sollen die Daten w,z aus Tabelle 2 geholt werden.
Bsp.:
$query = "SELECT * FROM Master_Kategorien";
$result=mysql_query($query);
while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
{
$KatIndi=$daten[Ma_Kat_ID];
echo $daten[Bezeichnung]." ".$KatIndi."<br>";
// $query = "SELECT * Kategorien WHERE Ma_Kat_ID=$KatIndi LIMIT 0 , 1";
// $result=mysql_query($query);
// while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
// {
// echo $daten[Kat_ID]."<br>";
// }
}
Naja das war mein Lösungsansatz der natürlich nicht funktionierte, aber ehrlich, soweit hatte ich mich bisher auch noch nie in MySql ran gewagt.
Es soll aus Tabelle 2 nur immer der die erste Spalte abgefragt werden, der zum entsprechenden y Wert der Tabelle 1 gehört.
Kann mir bitte jemand weiterhelfen?
Gruss
Silver
|
|
|
12.10.2004, 15:48
|
#2
|
|
Guest
Registriert seit: Aug 2002
|
Hier wäre ein JOIN optimal. Siehe LEFT JOIN.
|
|
|
12.10.2004, 16:12
|
#3
|
|
TP-Junior
Registriert seit: Sep 2004
|
Danke, hab ich nun probiert.
$query = "SELECT * FROM Master_Kategorien LEFT JOIN Kategorien ON Master_Kategorien.Ma_Kat_ID=Kategorien.Ma_Kat_ID";
$result=mysql_query($query);
while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
{
Dann bringt er mir aber einen php Fehler, in folgender Zeile.
echo $daten[Bezeichnung]." "$daten[Ma_Kat_ID]." ".$daten[Kat_ID]."<br>";
Parse error: parse error, expecting `','' or `';
Zudem ist das Problem, das er bei folgender Abfrage:
$query = "SELECT * FROM Master_Kategorien LEFT JOIN Kategorien ON Master_Kategorien.Ma_Kat_ID=Kategorien.Ma_Kat_ID";
$result=mysql_query($query);
while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
{
$KatIndi=$daten[Ma_Kat_ID];
echo $daten[Bezeichnung]." ".$KatIndi."<br>";
}
noch Mehrfachausgaben angezeigt werden. Da ja in der Tabelle 2, die Ma_Kat_ID mehren Kategorien zugeordnet ist.
Er soll aber je nur eine Ma_Kat_ID anzeigen, mit jeweils der ersten zugeordneten Kategorie aus Tabelle 2.
Gruss
Silver
Geändert von Silverhawk (12.10.2004 um 16:22 Uhr).
|
|
|
13.10.2004, 07:46
|
#4
|
|
TP-Supporter
Registriert seit: Apr 2001
|
Hallo,
versuch es doch mal alternativ mit dem inner join.
Wenn Du nur immer einen Datenstatz pro ID aufrufen möchtest, dann solltest Du es mit dem distinct probieren. Hierfür müssen aber die zusammengefügten Datensätze alle den gleichen Wert haben
select distinct a.bezeichnung, a.katid from...
Ist das nicht der Fall, würde es mit einem Subselect funktionieren, aber da weiss ich nicht, ob Deine mySQL-Version dies schon unterstützt.
Noch eine Möglichkeit wäre, immer dem 1. Datensatz mit der Kategorie, die hinzugefügt wird, in einer gesonderten Spalten eine Wert mitzugeben, z.b. 1. In dem Falle wäre es ja ein leichtes, nur immer einen pro Kategorie zu selectieren.
Hier würde ich noch einen Punkt vor $daten[Ma_Kat_ID] setzen.
echo $daten[Bezeichnung]." ".$daten[Ma_Kat_ID]." ".$daten[Kat_ID]."<br>";
__________________
Liebe Grüße, die Judi!
|
|
|
15.10.2004, 07:05
|
#5
|
|
TP-Junior
Registriert seit: Sep 2004
|
Danke für die Tips, hab ich probiert, nun funktioniert es wie gewünscht
Gruss
Silver
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:27 Uhr.
|
 |