Hier wäre ein JOIN optimal. Siehe LEFT JOIN.
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
Hier wäre ein JOIN optimal. Siehe LEFT JOIN.
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)
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!
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)