我有2个表(客户和报告)。他们有一对多的关系。我想得到一个客户和所有属于这个cusotmer的报告。这是我的表的结构:
CUSTOMER:
+----+----------+-----+-----------+
| ID | Lastname | AGE | ADDRESS |
+----+----------+-----+-----------+
| 1 | Ramesh | 32 | Ahmedabad |
| 2 | Khilan | 25 | Delhi |
+----+----------+-----+-----------+
REPORT:
+----+-----------------+------+
| ID | Content |state |
+----+-----------------+------+
| 1 | I am a content | ok |
| 1 | I am a content | ok |
+----+----------+------+------+
所以现在我想查询我的数据库中的客户Ramesh并获得具有相同ID的所有报告。我想在表格中显示报告,在某些文本字段中显示客户数据。
有没有办法通过一个查询获取所有信息或者我是否需要更多查询?一个用于客户,一个用于所有报告?
答案 0 :(得分:1)
select a.*, b.* from customer a join report b on (a.ID =b.ID)
where a.ID=1
答案 1 :(得分:1)
我认为你的DB-Design需要修改。你可以看here。它是关于数据库规范化的一个解释。
在您的情况下,我会在您的REPORT表中添加一个新列。您需要这个库存来将您的桌子彼此连接起来,并将您的报告提交给您的顾客。所以我的建议是:
REPORT:
+----+-----------------+------+-------------+
| ID | Content |state |Coustomer_ID |
+----+-----------------+------+-------------+
| 1 | I am a content | ok | 1 |
| 1 | I am a content | ok | 1 |
+----+----------+------+------+-------------+
使用这个额外的列,您可以使用WHERE语句连接表:
WHERE COUSTOMER.ID = REPORT.COUSTOMER_ID
或使用JOIN法规
COUSTOMER INNER JOIN REPORT ON COUSTOMER.ID = REPORT.COUSTOMER_ID
请注意,有不同的方式来连接表格。 See here for a little explantion
现在您已准备好获取数据:
SELECT * FROM COUSTOMER WHERE Lastname = 'Ramesh' AND WHERE COUSTOMER.ID = REPORT.COUSTOMER_ID;
或加入:
SELECT * FROM COUSTOMER INNER JOIN REPORT ON COUSTOMER.ID = REPORT.COUSTOMER_ID WHERE COUSTOMER.ID = 1;
两种情况下的输出应该看起来像这样:
+----+----------+-----+-----------+----+-----------------+------+-------------+
| ID | Lastname | AGE | ADDRESS | ID | Content |state |Coustomer_ID |
+----+----------+-----+-----------+----+-----------------+------+-------------+
| 1 | Ramesh | 32 | Ahmedabad | 1 | I am a content | ok | 1 |
| 2 | Ramesh | 32 | Ahmedabad | 1 | I am a content | ok | 1 |
+----+----------+-----+-----------+----+----------+------+------+-------------+
我希望有帮助
答案 2 :(得分:0)
在我看来,你必须在REPORT表中添加一个带有Coustomer-ID的coulom,这样你才能连接这两个表格。完成后,您可以按名称搜索coustomer:
SELECT * FROM COUSTOMER WHERE Lastname = Ramesh AND WHERE COUSTOMER.ID = REPORT.COUSTOMER_ID;
或他的身份证明:
SELECT * FROM COUSTOMER WHERE COUSTOMER.ID = 1 AND WHERE COUSTOMER.ID = REPORT.COUSTOMER_ID;