【发布时间】:2021-10-22 13:58:54
【问题描述】:
我有一个主表(建议)和两个参考表(专家、朋友)
advices
----------------------------------------
|id | advisor_id | advisor_type |
----------------------------------------
| 1 | 6 | expert |
| 2 | 6 | friend |
| 3 | 7 | expert |
| 4 | 8 | expert |
----------------------------------------
expert
----------------------------------
|id | lastname | firstname |
----------------------------------
| 6 | Polo | Marco |
| 7 | Wayne | John |
| 8 | Smith | Brad |
----------------------------------
friend
----------------------------------
|id | lastname | firstname |
----------------------------------
| 6 | Doe | John |
| 7 | Brown | Jerry |
| 8 | Goofy | Doofy |
----------------------------------
我想获得所有建议(一些来自专家,一些来自朋友),并将他们各自的姓氏和名字作为结果集的一部分。
每个建议行都有参考表(专家表、朋友表),通过 id 和类型与之关联。
所以我希望得到一个基于 id 的结果,但取决于要查询哪个表的类型
结果如下所示 根据是专家还是朋友,结合参考表中的姓氏和名字。
advices (array)
----------------------------------------------------------------
|id | advisor_id | advisor_type | lastname | firstname |
-----------------------------------------------------------------
| 1 | 6 | expert | Polo | Marco |
| 2 | 6 | friend | Doe | John |
| 3 | 7 | expert | Wayne | John |
| 4 | 8 | expert | Smith | Brown |
-----------------------------------------------------------------
在非编程简单的单词术语中,我想创建一个这样的查询。
SELECT
advices.id, advices.advisor_id, advices.type
IF advices.type==expert THEN expert.lastname, expert.firstname
ELSE IF advices.type==friend THEN friend.lastname, friend.firstname
FROM advices, expert, friend
显然,我知道 SELECT 语句不允许这种类型的动态逻辑。但这可以通过其他方式完成吗?
【问题讨论】: