Как выбрать 3 записи внешнего ключа с объединением в sql - PullRequest
0 голосов
/ 15 апреля 2020

Прошу прощения за мой бедный Энгли sh. У меня есть таблица для регистрации проекта: как

Type of service | Total Amount | prepayment | last payment  | Cost of tolls 
   web design   |      1000    |  1 (F-key) |  2 (F-key)    |   3 (F-key)

Вторая таблица для статуса оплаты и суммы

  id   |  amount  |   Payment status  |    Description
  1    |   400    |        yes        |   for prepayment  
  2    |   600    |        no         |   for last payment 
  3    |    0     |        no         |   for Cost of tolls 

Теперь мой вопрос: Как я могу объединить две таблицы и тянуть все три столбца ТО?

Я вытащил столбец предоплаты с этим кодом

SELECT mzmx_request.service, mzmx_request.amount,
(mzmx_payment.payment) as prepayment,
(mzmx_payment.status) as prepayment_status 
FROM mzmx_request
JOIN mzmx_payment ON mzmx_request.prepayment = mzmx_payment.id

Как добавить еще два столбца?

JOIN mzmx_payment ON mzmx_request.payment = mzmx_payment.id
JOIN mzmx_payment ON mzmx_request.pay_more = mzmx_payment.id

Ответы [ 2 ]

3 голосов
/ 15 апреля 2020

Просто присоединяйтесь три раза. Вы уже сделали это один раз. Например:

SELECT
  r.service, 
  r.amount,
  pp.payment as prepayment,
  pp.status as prepayment_status,
  lp.payment as last_payment,
  lp.status as last_payment_status,
  ct.payment as cost_of_tolls,
  ct.status as cost_of_tolls_status 
FROM mzmx_request r
left JOIN mzmx_payment pp ON r.prepayment = pp.id
left JOIN mzmx_payment lp ON r.lastpayment = lp.id
left JOIN mzmx_payment ct ON r.costoftolls = ct.id

Поскольку вы трижды объединяетесь с одной и той же таблицей, вам нужно создать псевдоним таблицы. В этом случае я использовал псевдонимы pp, lp и ct для предоплаты, последнего платежа и стоимости дорожных сборов соответственно.

0 голосов
/ 15 апреля 2020

3 ссылочных поля являются независимыми - поэтому они нуждаются в независимых копиях таблицы ссылок:

SELECT *
FROM main
JOIN slave AS slave1 ON main.prepayment    = slave1.id
JOIN slave AS slave2 ON main.last_payment  = slave2.id
JOIN slave AS slave3 ON main.cost_of_tolls = slave3.id

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