Получить данные из 2 таблиц на основе таблицы соединений - PullRequest
0 голосов
/ 01 августа 2020

У меня есть следующие 3 таблицы:

1. offers                     2. producers                3. products

ProducerID | ProductID        ProducerID | ProducerName   ProductID | ProductName
-----------|----------        -----------|-------------   ----------|------------
1          |    1                  1     | John                1    | Wood
1          |    2                  2     | Bill                     | Metal
2          |    1                        

Я пытаюсь получить информацию с помощью операторов соединения. Вот что у меня есть на данный момент:

SELECT producers.ProducerName, products.ProductName
FROM offers
(RIGHT JOIN producers
ON offers.ProducerID = producers.ProducerID
RIGHT JOIN products
ON offers.ProductID = products.ProductID)
WHERE ProductName=${ProductName}

Я борюсь с оператором WHERE. Я хочу, чтобы пользователь ввел ProductName, который они ищут, чтобы преобразовать его в ProductID, а затем сравнить в предложении WHERE. Как должна выглядеть эта часть?

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Рассмотрите возможность использования простых объединений:

select pe.producerName, pu.productName
from producers pe
inner join offers o on o.producerID = pe.producerID
inner join products pu on pu.productID = o.productID
where pu.producerName = ?

right join здесь не нужны. Кроме того, нет необходимости вкладывать объединения в круглые скобки (это просто делает запрос менее читаемым, без каких-либо преимуществ). Наконец, псевдонимы таблиц (здесь pe, o и pu) делают запрос короче, а его проще писать и читать.

0 голосов
/ 01 августа 2020

Внешние соединения не нужны. Так что просто используйте:

select pr.ProducerName, p.ProductName
from offers o join
     producers pr
     on o.ProducerID = p.ProducerID join
     products p
     on o.ProductID = p.ProductID
where p.ProductName = ?

Обратите внимание на использование ?. Это заполнитель параметра . Если вы вызываете запрос из приложения, вы должны передавать значение в качестве параметра, а не изменять строку запроса.

Также обратите внимание на использование псевдонимов таблиц, которые упрощают запись и чтение запроса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...