【问题标题】:Decide to do LEFT JOIN on which table based on CONDITION根据 CONDITION 决定对哪个表做 LEFT JOIN
【发布时间】:2015-04-01 07:11:45
【问题描述】:

我有两张桌子。我想根据特定条件加入其中一张表。我想做这样的事情:

IF (Projects.paymentType==1)
    LEFT JOIN ProjectBudgetFixedPrice ON (Projects.budget=ProjectBudgetFixedPrice.id)
ELSE
    LEFT JOIN ProjectBudgetPerHourPrice ON (Projects.budget=ProjectBudgetPerHourPrice.id)

我创建了以下内容,但它不起作用。

SELECT * FROM Projects LEFT JOIN
(IF (Projects.paymentType==1,ProjectBudgetFixedPrice,ProjectBudgetPerHourPrice))
    ON 
(IF (Projects.paymentType==1,Projects.budget=ProjectBudgetFixedPrice.id,Projects.budget=ProjectBudgetFixedPrice.id))

WHERE (Projects.statusCode=3 OR Projects.statusCode=4) AND Projects.suspended='N' AND (Projects.paymentType=1 OR Projects.paymentType=2)

有什么帮助或建议吗?

【问题讨论】:

标签: mysql sql


【解决方案1】:

您应该能够使用 UNION。

类似

SELECT
  *
FROM
  Projects
  LEFT JOIN
    ProjectBudgetFixedPrice
    ON Projects.budget = ProjectBudgetFixedPrice.id
WHERE
  Projects.paymentType = 1
  AND ((Projects.statusCode = 3 OR Projects.statusCode = 4)
  AND Projects.suspended = 'N'
  AND (Projects.paymentType = 1 OR Projects.paymentType = 2))
UNION
SELECT
  *
FROM
  Projects
  LEFT JOIN
    ProjectBudgetPerHourPrice
    ON Projects.budget = ProjectBudgetPerHourPrice.id
WHERE
  Projects.paymentType <> 1
  AND ((Projects.statusCode = 3 OR Projects.statusCode = 4)
  AND Projects.suspended = 'N'
  AND (Projects.paymentType = 1 OR Projects.paymentType = 2));

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2015-07-14
    • 2018-01-28
    相关资源
    最近更新 更多