Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 - Fatal编程技术网

mysql使用某种内部连接在两个表上搜索

mysql使用某种内部连接在两个表上搜索,mysql,Mysql,表estate_common->房产的通用数据,如产权名称等。房产可能不同 例如1类-公寓2类-住宅等 id | kind | title | name 596 | 1 | title 596 | name 596 597 | 1 | title 597 | some 597 598 | 1 | title 598 | some 598 599 | 1 | title 599 | some 599 600 | 1 | title 600 | some 60

表estate_common->房产的通用数据,如产权名称等。房产可能不同 例如1类-公寓2类-住宅等

id  | kind | title     | name
596 | 1    | title 596 | name 596
597 | 1    | title 597 | some 597
598 | 1    | title 598 | some 598
599 | 1    | title 599 | some 599
600 | 1    | title 600 | some 600
601 | 5    | title 607 | some 601
表estate\u kind\u 1->不同种类的特定数据每个estate\u kind\u有不同的结构列等

id | estate_common_id | floor | flat | shell
1  | 596              | 250   | 9b   | pvc
2  | 597              | 156   | 10c  | abc
3  | 598              | 126   | 12a  | csd
4  | 599              | 226   | 2a   | add
5  | 600              | 198   | 15o  | fdd
来自estate_common的id等于estate_common_来自estate_kind的id,其中R是表estate_common中的种类数

在准备查询之前,我知道我必须组合来自表estate\u common和estate\u kind\u 1的数据

使用两个表中的数据获取简单的房地产细节很容易

SELECT `common`.*, `kind`.* FROM `estate_common` AS `common` INNER JOIN `estate_kind_1` AS `kind` ON common.id = kind.estate_common_id WHERE (common.id = '597')
但现在我开始做一些xml导出,需要在选择estate_common id时从表means estate_common和estate_kind_1中选择数据

那么像这样提问吧

SELECT `common`.*, `kind`.* FROM `estate_common` AS `common`, `estate_kind_1` AS `kind` WHERE (common.id IN ('596,597'))
但它给了我奇怪的结果

id  | kind | title     | name     | id | estate_common_id | floor | flat | shell
596 | 1    | title 596 | name 596 | 1  | 596              | 250   | 9b   | pvc
596 | 1    | title 596 | name 596 | 2  | 597              | 156   | 10c  | abc
表estate_kind_1中的数据表示右侧id为1 a 2的数据正常,但estate_common左侧的数据用于两行的数据相同

应该是

id   | kind | title     | name   | id | estate_common_id | floor | flat | shell
596  | 1    | title 596 | name 596 | 1  | 596              | 250   | 9b   | pvc
597  | 1    | title 597 | name 597 | 2  | 597              | 156   | 10c  | abc
我试着按不同的方式分组,但可能是错误的 我很高兴能得到任何帮助


谢谢

您的后一个查询没有显式连接,因此正在进行内部连接。因为也没有ON子句,所以发生的是一个完全的叉积,限制在一个表上。您应该得到的结果是,对于每一种类型的行,您将得到两个结果-一个用于596个公共行,另一个用于597个公共行

我假设您已将结果裁剪为两行

您需要的查询是:

SELECT `common`.*, `kind`.* 
  FROM `estate_common` AS `common`, `estate_kind_1` AS `kind` 
  ON common.id = kind.estate_common_id
  WHERE (common.id IN ('596,597'));

关于你的问题,我一定遗漏了什么。这是你想要的吗

SELECT `common`.*, `kind`.*
FROM `estate_common` AS `common`
     INNER JOIN `estate_kind_1` AS `kind` ON common.id = kind.estate_common_id
WHERE common.id IN ('596,597')

解决方案非常简单

SELECT common.*, kind.* FROM estate_common common, estate_kind_1 kind WHERE common.id = kind.estate_common_id AND (common.id IN (596,597))

选择common.*,kind.*从estate_common作为common内部连接estate_kind_5作为common.id上的kind=kind.estate_common_id,其中common.id在“596597”中可以看到,我问题的最后一个blokc只给出了一行,common.id 596是mi的第一个想法。我需要从查询中的两个表中选择596和597数据应该是estate\u kind\u 1,而不是estate\u kind\u 5,正如我刚才发布的,我只是在本地主机上有不同的表