仅从一个依赖于值的表填充

rhfm7lfc  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(573)

对不起,我有段时间没用sql了。我有三张关于超级英雄的table。我想得到超级英雄的名字,并根据结果从惊奇漫画或华盛顿检索一个电视名字。但是,在检索信息时,查询会同时填充这两个列,而我每个名称应该只有一个条目。我的观点是:

CREATE VIEW `herotelly` AS 
SELECT distinct(a.Name), b.Title as showname, c.Title
FROM superheroes a, marveltv b, dctv c
WHERE a.Name = b.Superhero or a.Name = c.Superhero;

然而结果是

"Superman"  "Spidey Super Stories"  "Adventures of Superman"   
"Batman"    "Spidey Super Stories"  "Batman"      
"Catwoman"  "Spidey Super Stories"  "Batman" 
"Robin"     "Spidey Super Stories"  "Batman"

但是我只想要一个结果,比如在第一行,我只想要超人,第二列是空的,第三列是结果。
非常感谢您的帮助。
尼尔。

isr3a4wc

isr3a4wc1#

谢谢这个方法对我有用。尼尔。
创建视图 herotelly 当选择s.name,t.title from superheros s join(选择superhero,title from marveltv union选择superhero,title from dctv)t on s.name=t.superhero时

zfycwa2u

zfycwa2u2#

这个查询应该会给出你想要的。没有样本数据很难确定。。。它使一个 UNION 两个标题表的 JOIN 在超级英雄桌上:

CREATE VIEW `herotelly` AS 
SELECT s.Name, t.Title
FROM superheroes s
JOIN (SELECT Superhero, Title FROM marveltv
      UNION
      SELECT Superhero, Title FROM dctv) t
  ON s.Name = t.Superhero
6ss1mwsb

6ss1mwsb3#

你在两者之间创造一个交叉产品 marveltv 以及 dctv ,然后从两者返回标题。使用 UNION 两个分开的连接。

SELECT a.name, b.title
FROM superheroes AS a
JOIN marveltv AS b ON a.name = b.superhero
UNION
SELECT a.name, b.title
FROM superheroes AS a
JOIN dctv AS b ON a.name = b.superhero

相关问题