mysql新手,我被困在sakila练习中

xfb7svmp  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(351)

一个月前我开始学习sql,我发现了这个sakila作业,我想我应该试试,来测试我自己。我有点坚持锻炼,我不知道我做错了什么。有人能帮我吗?
问题是:
查找与id为8的演员的名字相同的所有演员和客户的名字(名字和姓氏)。不要把id为8的演员还给他自己。请注意,不能将id为8的参与者的名称用作常量(仅id)。解决这个问题的方法不止一种,但您只需要提供一种解决方案。
我的代码是:
1

SELECT customer.first_name,customer.last_name FROM customer

LEFT JOIN actor ON (customer.first_name LIKE actor_id=8) 
            AND (actor.first_name LIKE actor_id=8)

2

SELECT customer.first_name,customer.last_name FROM customer

LEFT JOIN actor ON customer_id=actor_id

WHERE (customer.first_name LIKE actor_id=8) AND (actor.first_name LIKE actor_id=8)

我得到了很多返回的名字,但没有一个是正确的。我做错什么了?为什么代码没有返回与身份证号为8的演员相同的名字。

kwvwclae

kwvwclae1#

既然你需要把演员和服装师的名字结合起来,我们就先和工会联系。然后,该结果集与actor 8连接以匹配firstname。

SELECT s.first_name,s.last_name 
FROM (
  SELECT c.first_name,c.last_name 
  FROM customer c
  UNION ALL
  SELECT a.first_name,a.last_name 
  FROM actor a
  WHERE a.actor_id != 8
) as s
  JOIN actor a8 ON a8.first_name = s.first_name
WHERE a8.actor_id=8
5lhxktic

5lhxktic2#

我会说

Select C.firstName, C.lastName 
from Customer C, actor A 
where C.firstName=A.firstName and C.lastName=A.lastName and A.id=8

这意味着,您正在数据库中搜索“customer”表中的所有记录,其中的名字和姓氏与表actor的id为8的记录中的名字和姓氏完全相同。使用“and”是因为希望所有条件同时为真。你不需要从演员那里提取任何东西,因为你不需要它:它是“选择”在内部完成的;无论如何,您还应该从customer中提取其他重要的数据,否则您只会得到一堆完全相同的行。
查询n°2:

Select A.fistName, A.lastName 
from actor A 
where A.firstName=(
  select firstName 
  from actor where id=8
) and A.lastName=(
  select lastName 
  from actor where id=8
) and id<>8

必须使用子查询,即“select”between();这是因为如果在表actor中搜索id=8,只会得到一行,即id=8的行。对于子查询,db首先获取用于比较的数据,然后才搜索其他行。

nimxete2

nimxete23#

你需要得到演员和顾客的名字。两者都在两张不同的table上;因此,一种方法是 UNION ALL .

(SELECT customer_id AS id, 
        first_name, 
        last_name
 FROM customer
 WHERE first_name = (SELECT first_name FROM actor WHERE actor_id = 8))

UNION ALL

(SELECT actor_id AS id, 
        first_name, 
        last_name
 FROM actor
 WHERE actor_id <> 8 AND 
       first_name = (SELECT first_name FROM actor WHERE actor_id = 8))

相关问题