wählen Sie aus mehreren Tabelle mit mysql
Hatte ich meine Abfrage einrichten, den anderen Tag, als so
$query = "SELECT card_id,title,description,meta_description,seo_keywords,price
FROM cards,card_cheapest order by card_id";
Wie Sie sehen können, ich war die Auswahl card_id,title,description,meta_description,seo_keywords
aus der Tabelle cards
, und der Preis war aus cheapest_card
. Sie haben beide die card_id
gemeinsam (in beiden Tabellen). Aber ich lief in ein bisschen ein Problem. Wenn ich die query in navicat lite, ich erhalte eine Fehler "card_id is ambiguous"
. War ich etwas falsch?
- wollten Sie join der Tabellen ?
- Fehler Sagt, die 2 Tabellen der gleiche Spaltenname, DB ist die Identifizierung nicht welchen man nehmen soll, so müssen Sie den alias für jede Tabelle in der Namen und verwenden Sie das alias verweisen, die bestimmten Spalte abrufen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn 2 oder mehr Tabellen haben eine Spalte, die den gleichen Namen, Sie müssen zu qualifizieren, die Tabelle, die Sie möchten, dass die Spalte aus.
d.h.:
Außerdem, Sie wirklich wollen, um die Abfrage auszuführen diese Weise, ohne eine WHERE/JOIN-Klausel um zu definieren, wie zum verknüpfen der beiden Tabellen?
Wenn Sie die gleichen Spaltennamen in beiden Tabellen, die Sie, Sie wählen aus, müssen Sie das Präfix der Teil in der
SELECT
mit einer der Tabellennamen (es ist egal welche, ob es die gleiche Daten)wie
SELECT cards.card_id, ...
EDIT: Jedoch, cularis s Antwort ist viel mehr Begründung, als die meine, und beachten Sie Sie über den Beitritt zu den beiden card_id Spalten, wenn Sie wollen, um richtige Ergebnisse zu erzielen.
Beim ausführen von Abfragen, erhalten Sie Informationen aus mehreren Tabellen mit gemeinsamen Feldnamen, die Sie brauchen, um festzulegen, aus welcher Tabelle, die Sie möchten, zu extrahieren, was Feld. Sie tun dies durch die Angabe der Tabellenname vor dem Feldnamen.
In Ihrem Fall haben Sie zwei Möglichkeiten:
Karten.card_id oder card_cheapest.card_id.
Auch Stimme ich mit @cularis, sind Sie wahrscheinlich besser tun, einen join, aber immer noch müssen Sie angeben, welche card_id, die Sie wählen möchten: die vom Karten-oder card_cheapest.