Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 从具有相同ID的两个表中查询值_Mysql_Sql_Join_Inner Join - Fatal编程技术网

Mysql 从具有相同ID的两个表中查询值

Mysql 从具有相同ID的两个表中查询值,mysql,sql,join,inner-join,Mysql,Sql,Join,Inner Join,我目前有一个数据库,其中包含两个表tc\u services和tc\u game\u services,其中包含关于同一服务的不同信息。它们都由服务id字段标识,我需要从其中一个字段提取账单id,从另一个字段提取游戏id 现在我在其他问题中找到了一些示例,但是当运行时,它们只是为每个服务提供了这两个值的列表,而不是我试图查询的特定值 在此查询中我需要更正什么 SELECT tcservices.billing_id, tcgameservices.game_id FROM tc_serv

我目前有一个数据库,其中包含两个表tc\u servicestc\u game\u services,其中包含关于同一服务的不同信息。它们都由服务id字段标识,我需要从其中一个字段提取账单id,从另一个字段提取游戏id

现在我在其他问题中找到了一些示例,但是当运行时,它们只是为每个服务提供了这两个值的列表,而不是我试图查询的特定值

在此查询中我需要更正什么

SELECT
  tcservices.billing_id,
  tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812';

使用上的指定两者之间的关系,以便在服务id上相等,然后使用过滤结果,其中:

SELECT
  tcservices.billing_id,
  tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = 1812

使用上的指定两者之间的关系,以便在服务id上相等,然后使用过滤结果,其中:

SELECT
  tcservices.billing_id,
  tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = 1812

这是非常基本的SQL。您没有在这些表上指定联接条件。正如您所提到的,您的公共列是
service\u id
。使用此条件连接两个表,然后在
WHERE
子句中为特定
service\u id
检索记录设置逻辑

SELECT
  tcservices.billing_id,
  tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = '1812';

解释您的方法的行为(下面一行):您从
tc\u服务
中提取符合标准
service\u id='1812'
的每条记录,然后将其与
tc\u gameservices
中的每条记录交叉连接。这就是你得到结果的原因

INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812'

我建议减少表别名的长度,以节省一些输入并使代码看起来更整洁。在处理更大、更复杂的查询时,这可能特别有用


作为旁注,如果您的
服务id
整数
数据类型,则不需要在值周围加单引号。

这是非常基本的SQL。您没有在这些表上指定联接条件。正如您所提到的,您的公共列是
service\u id
。使用此条件连接两个表,然后在
WHERE
子句中为特定
service\u id
检索记录设置逻辑

SELECT
  tcservices.billing_id,
  tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = '1812';

解释您的方法的行为(下面一行):您从
tc\u服务
中提取符合标准
service\u id='1812'
的每条记录,然后将其与
tc\u gameservices
中的每条记录交叉连接。这就是你得到结果的原因

INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = '1812'

我建议减少表别名的长度,以节省一些输入并使代码看起来更整洁。在处理更大、更复杂的查询时,这可能特别有用


作为补充说明,如果您的
服务\u id
整数
数据类型,则不需要在值周围加单引号。

我认为您应该在WHERE子句中搜索id,并指定要在内部联接中联接的列

SELECT tcservices.billing_id, tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = '1812';

我认为您应该在WHERE子句中删除正在搜索的ID,并在内部联接中指定要联接的列

SELECT tcservices.billing_id, tcgameservices.game_id
FROM tc_services AS tcservices
INNER JOIN tc_game_services AS tcgameservices ON tcservices.service_id = tcgameservices.service_id
WHERE tcservices.service_id = '1812';

请尝试使用tcservices.service\u id=tcgameservices.service\u id=tcgameservices.service\u id几乎与表名一样长的表别名,而不是使用应该在WHERE子句中的tcservices.service\u id='1812'。。。我会保存一些键入,并使用tcs和tcgs作为示例。不要使用应该在WHERE子句中的tcservices.service\u id='1812',尝试使用tcservices.service\u id=tcgameservices.service\u id几乎与表名一样长的表别名。。。我会节省一些打字时间,比如tcs和tcgs。非常感谢,就这样。非常感谢,就这样。谢谢你非常详细的回复,我非常感谢。我从来没有太多地使用过JOIN语句,因此我总能找到解决方法。这使得它非常简单,将来会非常方便!谢谢你的详细回复,我很感激。我从来没有太多地使用过JOIN语句,因此我总能找到解决方法。这使得它非常简单,将来会非常方便!