Ich weiß, dass dies entweder left join
oder left outer join
oder etwas ähnliches verwenden, aber diese Art von Abfragen immer mich abstoßen.SQL: Kombinieren zwei ausgewählte Abfragen, mit Ergebnissen aus der ersten
Ich habe zwei Tabellen:
Kategorien
ID CatName CatSlug
1 Big Shirts big-shirts
Artikel
ID ItemName Category Price ...
1 Big Red Shirt 1 20.00
Also ich versuche, alle Elemente in einer bestimmten Kategorie zurückzukehren, von der Kategorie Slug abgefragt. Ich muss auch den Kategorienamen zurückgeben. So, jetzt meine beiden Abfragen sind wie:
$return = array();
$query = "SELECT * FROM categories WHERE CatSlug = :CatSlug LIMIT 1";
$param = array(
'CatSlug' => $slug
);
$result = $this->Db->selectOne($query, $param);
if ($result) { // If result exists
$return['Category'] = $result['CatName']; // Need to return cat name
$query = "SELECT * FROM items WHERE Category = :Category";
$param = array(
'Category' => $result['ID']
);
$result = $this->Db->selectAll($query, $param);
if ($result) { // If result exists
$return['Items'] = $result;
} else { // If result does not exist
$return['Items'] = array();
} // End if result does not exist
}
return $return;
Also, ich bin wieder ein Array mit zwei Schlüsseln: Category
enthält den CatName
Wert in der categories
Tabelle und Items
enthält ein Array aller Elemente innerhalb dieser Kategorie, oder ein leeres Array, wenn es keine gibt.
Wie kann ich diese beiden Abfragen kombinieren?
Wenn join "immer wirft dich aus", Sie Sie müssen einige gute Tutorials lesen, denn eine erfolgreiche Datenbanknutzung erfordert, dass Sie sie verstehen. – Barmar
@Barmar Ich weiß das. Wenn ich ein "gutes" Tutorial finden könnte, würde ich es tun. Ich habe viele gelesen, aber von dem, was ich gefunden habe, machen sie alle einen schlechten (meiner Meinung nach) Job, es richtig zu erklären. – JROB
Ein guter Anfang: https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ – Barmar