MySql запрос неверный результат phpmyadmin - PullRequest
0 голосов
/ 24 октября 2018

сейчас я работаю над базой данных, в которой я хочу получить информацию по внешнему ключу.

SELECT * FROM Produkt p, Dingseinheit d, Bestellnr b
WHERE p.pID = d.dID = b.bID
AND p.pID = 2;

+-----+------------+--------------+----------------+-----------+---------+---------+---------+-------------+-----+------+---------+-----+-----------+
| pID | kategorie  | beschreibung | mengeProKasten | lieferant | x_coord | y_coord | z_coord | beliebtheit | dID | wert | einheit | bID | bestellnr |
+-----+------------+--------------+----------------+-----------+---------+---------+---------+-------------+-----+------+---------+-----+-----------+
|   2 | Widerstand | PTC          |            100 | Conrad    |       6 |       0 |       0 |           0 |   2 |  100 | kOhm    |   1 |   1417641 |
+-----+------------+--------------+----------------+-----------+---------+---------+---------+-------------+-----+------+---------+-----+-----------+

Прокрутка до конца.Почему он показывает bID и bestellnr.Если вы хотите знать, как выглядят таблицы.посмотри дальше.

Моя база данных: db design

Если я выполню этот запрос: query

Я получу этот результат: результат запроса

Это мои базы данных с данными:

База данных Produkt: Produkt db

База данных Dingseinheit: Dingseinheit db

База данных Bestellnr: Bestellnr db

Не могу понять, почему я получаю результат из базы Bestellnr.Я знаю, что не смогу включить эту базу данных, но для моего будущего проекта я хотел бы просто использовать один запрос, который покажет мне все соответствующие данные, какие таблицы я искал.

Я надеюсь, что моя проблема понятна, если нетзадавайте вопросы.

Также не обращайте внимания на немецкие имена.

1 Ответ

0 голосов
/ 24 октября 2018

Вы хотите

 p.pID = d.dID and p.pID = b.bID

или аналогичные.То, что у вас есть, делает pID = dID, который возвращает 1 (true), затем делает 1 = bID.Если у вас есть строка, в которой bID равен 0, она также вернет ее вместе со всеми комбинациями строк p и d, в которых у них были разные идентификаторы.

Если для каждой строки нет bID, вам нуженосталось присоединиться.Переписать ваш запрос с современным синтаксисом SQL:

SELECT *
FROM Produkt p
JOIN Dingseinheit d ON d.dID=p.pID
LEFT JOIN Bestellnr b ON b.bID=p.pID
WHERE p.pID = 2;
...