Ich habe zwei Tabellen in meiner Datenbank, eine davon ist order
und die andere ist user
.Warum würde innerer Join in MySQL nicht verwandte Informationen zurückgeben?
Ich möchte die Informationen für eine Bestellung zusammen mit dem zugehörigen Benutzer, der die Bestellung gemacht hat, ziehen, um dies zu tun, habe ich eine INNER JOIN
verwendet, um die beiden Tabellen auf den Namen des Benutzers zu verbinden.
Das Problem ist jedoch, dass es die richtigen Bestellinformationen bringt, aber der Benutzer ist nicht der zugehörige Benutzer und ist stattdessen der erste Benutzerdatensatz in der Datenbank.
Warum in der Welt passiert das?
Hier ist meine Frage:
SELECT orders.oid,
orders.ordernumber,
orders.date_requested,
orders.date_approved,
orders.status,
orders.region,
orders.users_name,
orders.comments,
orders.customShippingAddress,
orders.approval_comments,
orders.approved_by_id,
users.firstname,
users.lastname,
users.address,
users.address2,
users.city,
users.`state`,
users.zip,
users.phonenum,
users.cellnum,
users.officenum,
users.region,
users.shipping_address
FROM orders
INNER JOIN users
ON orders.users_name=users.firstname + ' ' + users.lastname
WHERE orders.oid='$id'";
Ich verstehe nicht, warum das nicht funktioniert. Kann mir bitte jemand eine Richtung geben?
Sie sind auf etwas, das sehr wohl nicht einzigartig sein könnte, sollten Sie etwas mehr wie innere Beitritt haben ... order.user_id = user.id –
Wenn der Benutzer mehrere Aufträge macht, dann hätte ich nicht das gleiche Problem für die Einzigartigkeit? – SherwoodPro
Nein, ein Benutzer kann mehrere Bestellungen haben. Ein Benutzer pro Bestellung. Aber was ich meinte, ist die Tatsache, dass wenn Sie 2 Benutzer mit dem gleichen Namen haben, beide mögliche Übereinstimmungen für diese Bestellung sein werden. Es wird einfach das erste gefundene Match auswählen. –