2017-05-24 8 views
1

Ich habe drei Tabellen, Benutzer, Auto und Miete. Miete Tabelle enthält wie Transaktionsinformationen. Ich möchte die Ausgabe anzeigen, wo einige der Benutzer Tabellenspalte, einige Auto Spalte mit Miete Tabelle verbinden.MySQL - nicht eindeutige Tabelle/Alias ​​

Ich benutze PHPMyAdmin, um die Abfragen zu extrahieren, aber ich habe den Fehler "Nicht eindeutige Tabelle/Alias".

Meine Anfragen:

SELECT `rent`.*, `cars`.`car_id`, `cars`.`car_name`, `users`.`user_id`, 
    `users`.`name`, `users`.`state`, `users`.`address`, `users`.`zip`, 
    `users`.`phone`, `users`.`email` 
FROM `rent` , `cars` , `users` 
LEFT JOIN `rent` ON `users`.`user_id` = `rent`.`user_id` 
LEFT JOIN `rent` ON `cars`.`car_id` = `rent`.`car_id` 
AND `rent`.`user_id` = `users`.`user_id` AND `rent`.`car_id` = `cars`.`car_id` 

Dank

+2

Ist es notwendig, dass die Abfrage zweimal 'JOIN mieten' Tabelle zweimal? Ich vermute, einer von ihnen könnte "Autos" sein? Wenn Sie trotzdem immer noch wollen, dass die gleiche Tabelle doppelt verknüpft wird, sollten Sie einen Alias ​​verwenden: 'LINKE JOIN-Tabelle1 AS t1' und dann für jedes ihrer Felder:' t1.field1'. –

+1

Auch die 'JOIN' wurde falsch verwendet -' VON Miete, Autos, Benutzer LINKS JOIN ... '. Das hilft nicht. Bitte werfen Sie einen Blick darauf: [MySQL LINKS JOIN Beispiel] (https://Stackoverflow.com/q/22769989/2298301) –

Antwort

0

Nie Kommas in die FROM Klausel. immer verwenden richtige explizite JOIN Syntax:

SELECT r.*, c.car_id, c.car_name, u.user_id, u.name, u.state, u.address, u.zip, u.phone, u.email 
FROM users u JOIN 
    rent r 
    ON u.user_id = r.user_id JOIN 
    cars c 
    ON c.car_id = r.car_id; 

Beachten Sie die Verwendung von Tabellen-Aliases. Sie machen die Abfrage einfacher zu schreiben und zu lesen.

Ich habe auch keine Ahnung, warum Sie LEFT JOIN verwenden, also habe ich sie zu inneren Joins geändert.

+0

Vielen Dank für Ihren Guide! Ich arbeite seit einiger Zeit daran. Wirklich danke! – Pidaus

0

Die nicht-eindeutigen Tabellen alias bedeutet, dass mehr als 1 Tabelle den gleichen Alias ​​hat.

Ihre Suche:

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent , cars , users 
LEFT JOIN rent ON users.user_id = rent.user_id 
LEFT JOIN rent ON cars.car_id = rent.car_id AND rent.user_id = users.user_id AND rent.car_id = cars.car_id 

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent , cars , users 
LEFT JOIN rent AS rent_1 ON users.user_id = rent_1.user_id 
LEFT JOIN rent AS rent_2 ON cars.car_id = rent_2.car_id AND rent_2.user_id = users.user_id AND rent_2.car_id = cars.car_id 

dieses Problem zu vermeiden, lesen sollte.

Für den Rest: Die Abfrage sieht ein wenig aufwendiger dann sein, es sollte: Es sieht aus wie Sie es so und bekommen das gleiche Ergebnis führen kann:

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent 
LEFT JOIN users ON users.user_id = rent.user_id 
LEFT JOIN cars ON cars.car_id = rent.car_id AND rent.user_id = users.user_id AND rent.car_id = cars.car_id 
Verwandte Themen