Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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从一个表中获取与另一个表的外键相关的内容_Mysql_Sql_Database_Foreign Keys - Fatal编程技术网

MySQL从一个表中获取与另一个表的外键相关的内容

MySQL从一个表中获取与另一个表的外键相关的内容,mysql,sql,database,foreign-keys,Mysql,Sql,Database,Foreign Keys,我有两张桌子: CREATE TABLE users( userID int primary key not null auto_increment, username varchar(16), passcode varchar(16), email varchar(50) not null ); CREATE TABLE favorites( userID int not null, favID1 varchar(50) not null,

我有两张桌子:

CREATE TABLE users(
    userID int primary key not null auto_increment,
    username varchar(16),
    passcode varchar(16),
    email varchar(50) not null
);

CREATE TABLE favorites(
    userID int not null,
    favID1 varchar(50) not null,
    favID2 varchar(50) not null,
    favID3 varchar(50) not null,
    favID4 varchar(50) not null,
    favID5 varchar(50) not null,
    favID6 varchar(50) not null,
    favID7 varchar(50) not null,
    favID8 varchar(50) not null,
    favID9 varchar(50) not null,
    favID10 varchar(50) not null,
    favID11 varchar(50) not null,
    favID12 varchar(50) not null,
    FOREIGN KEY fk1(userID) REFERENCES users(userID)
);

我想用users表中的用户名获取favorites表的内容,它的语句是什么样子的?我对SQL和数据库相当陌生,如果这是一件小事,我深表歉意。我看过的所有其他资源似乎都与我想做的事情无关。

您的数据库设计存在一些问题。您不应该为每个收藏夹维护单独的列,而应该修改
收藏夹
表,以便单个记录存储一个且仅一个用户收藏夹关系:

CREATE TABLE favorites (
    userID int not null,
    favID varchar(50) not null,
    FOREIGN KEY fk1(userID) REFERENCES users(userID)
);
现在,如果要报告给定用户的常用ID,只需使用基本连接,例如

SELECT
    u.userID,
    u.username,
    GROUP_CONCAT(f.favID ORDER BY f.favID) AS favIDs
FROM users u
LEFT JOIN favorites f
    ON u.userID = f.userID
GROUP BY
    u.userID,
    u.username;

您当前设计的
收藏夹
表的最大问题可能是它最多只能容纳12个收藏夹ID。如果您的系统需要支持更多功能,则必须修改表本身,即需要更改DDL。使用我建议的设计,您只需要添加更多记录/数据,这是一个DML更改。

您希望在这两个表中加入两个tables basis userID列,并显示favorites表的用户名和内容。这是否回答了您的问题?示例代码显示了相同的情况,OP只是试图在正确的基础上添加一个额外的步骤(当然)。收藏夹的排列顺序可能有某种意义,而您当前的模型忽略了这一点。@您的答案也无法解决这一点,因为您从未发布过答案。好的。“隔离情况如何?”老实说,在被困在家和被困在办公室之间做出选择是很困难的。至少,在新加坡,他们允许你在户外无限量地锻炼,所以我们不会疯狂。谢谢你,我会试试的。还有一个问题,这个收藏夹表只是为了将ID存储到另一个餐厅表(包含餐厅信息)的另一个表中,但我很好奇,在这个收藏夹表中包含餐厅信息会更容易吗?另外,我是否可以为收藏夹表中的ID实现自动增量(插入顺序很重要)?