Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-如何使用不同表中的数字获取名称?_Mysql_Sql_Create Table - Fatal编程技术网

Mysql SQL-如何使用不同表中的数字获取名称?

Mysql SQL-如何使用不同表中的数字获取名称?,mysql,sql,create-table,Mysql,Sql,Create Table,下面是我使用SQL为数据库创建表的过程。 我不知道如何从likes表中为ID和LIKED显示名称 这个任务应该很简单,能够显示出彼此喜欢的人的名字。有一个数据输入表单,要求为彼此喜欢的人输入ID,但我必须显示彼此喜欢的人的姓名。。。。我希望我没有把这弄糊涂。 一些SQL代码是否可以显示喜欢谁的人的姓名 CREATE TABLE person ( ID INT PRIMARY KEY, NAME VARCHAR(50) ) engine=innodb; CREATE TABLE

下面是我使用SQL为数据库创建表的过程。 我不知道如何从likes表中为ID和LIKED显示名称

这个任务应该很简单,能够显示出彼此喜欢的人的名字。有一个数据输入表单,要求为彼此喜欢的人输入ID,但我必须显示彼此喜欢的人的姓名。。。。我希望我没有把这弄糊涂。 一些SQL代码是否可以显示喜欢谁的人的姓名

CREATE TABLE person 
(
    ID INT PRIMARY KEY,
    NAME VARCHAR(50)
) engine=innodb;

CREATE TABLE likes 
(
    ID INT,
    LIKED INT,
    constraint likesPK primary key(ID,LIKED),
    constraint personFK foreign key(ID) references person(ID)
    on delete cascade on update cascade,
    constraint nameFK foreign key(LIKED) references person(ID)
    on delete cascade on update cascade
) engine=innodb;
我试图做的事情的示例,但还需要一个列来显示“喜欢”的人:

试试这个

select b.id, b.name, (select name from person where id = a.liked) 
from likes a join person b 
on a.id = b.id
where b.id = some id AND b.id = a.id
试试这个

select b.id, b.name, (select name from person where id = a.liked) 
from likes a join person b 
on a.id = b.id
where b.id = some id AND b.id = a.id

似乎您的
like
表应该有两个对
person
表的引用(使其成为中间/透视表);基本上,一个“喜欢ee”和一个“喜欢或”。所以像这样的
应该是这样的:

like
--------------
ID int
PersonWhoLikedID int
PersonWhoWasLikedID int
select p1.whatever, p2.whatever
from person p1  -- this would be me
join likes l1 on p1.id = l1.id  -- this is who I like, which is you
join likes l2 on l1.liked = l2.id -- this is who you like, which is me
join person p2 on l2.id = p2.id  -- this is you
etc
然后,您的查询变成:

SELECT B.name, C.name AS `Liked Person`
FROM likes
LEFT JOIN person B ON likes.PersonWhoLikedID = B.ID
LEFT JOIN person C ON likes.PersonWhoWasLikedID = C.ID

似乎您的
like
表应该有两个对
person
表的引用(使其成为中间/透视表);基本上,一个“喜欢ee”和一个“喜欢或”。所以像这样的
应该是这样的:

like
--------------
ID int
PersonWhoLikedID int
PersonWhoWasLikedID int
select p1.whatever, p2.whatever
from person p1  -- this would be me
join likes l1 on p1.id = l1.id  -- this is who I like, which is you
join likes l2 on l1.liked = l2.id -- this is who you like, which is me
join person p2 on l2.id = p2.id  -- this is you
etc
然后,您的查询变成:

SELECT B.name, C.name AS `Liked Person`
FROM likes
LEFT JOIN person B ON likes.PersonWhoLikedID = B.ID
LEFT JOIN person C ON likes.PersonWhoWasLikedID = C.ID

首先,我向你的大致方向挥动手指。编程需要精确性,而您的短语“使用sql”很模糊。如果您是指sql server,请这样说。事实上,编辑您的帖子并添加适当的标签

其次,您的on-delete级联位于错误的位置。事实上,在这种情况下,删除级联可能是一个非常糟糕的主意

第三,那又是什么?哦,是的,你的问题。我如何向喜欢彼此的人展示?可能是这样的:

like
--------------
ID int
PersonWhoLikedID int
PersonWhoWasLikedID int
select p1.whatever, p2.whatever
from person p1  -- this would be me
join likes l1 on p1.id = l1.id  -- this is who I like, which is you
join likes l2 on l1.liked = l2.id -- this is who you like, which is me
join person p2 on l2.id = p2.id  -- this is you
etc

顺便说一句,我不认为这很简单。

首先,我向你的大致方向挥动手指。编程需要精确性,而您的短语“使用sql”很模糊。如果您是指sql server,请这样说。事实上,编辑您的帖子并添加适当的标签

其次,您的on-delete级联位于错误的位置。事实上,在这种情况下,删除级联可能是一个非常糟糕的主意

第三,那又是什么?哦,是的,你的问题。我如何向喜欢彼此的人展示?可能是这样的:

like
--------------
ID int
PersonWhoLikedID int
PersonWhoWasLikedID int
select p1.whatever, p2.whatever
from person p1  -- this would be me
join likes l1 on p1.id = l1.id  -- this is who I like, which is you
join likes l2 on l1.liked = l2.id -- this is who you like, which is me
join person p2 on l2.id = p2.id  -- this is you
etc

顺便说一句,我并不认为这很简单。

你的查询缺少两个表之间的连接。其中a.id=b.id对我来说像是一个连接。你的查询缺少两个表之间的连接。其中a.id=b.id对我来说像是一个连接。“…我向你的大致方向挥动手指”将是我下周最喜欢的短语。。。“…我朝你的方向挥动手指“将成为我下周最喜欢的新短语…不需要另一个col.id是‘喜欢’的人,除非您指定让likes表id作为表likes的主自动键。这是一个好主意,不需要另一个col.id是“喜欢”的人,除非您指定让likes表id作为表likes的主自动键。这是个好主意