如何从另一个表中通过他们的ID从另一个表中获取值?
文件表(req1-7是需求的ID从另一个表)如何从另一个表中通过他们的ID从另一个表中获取值?
| document_id | document_name | document_amount | req_1 | req_2 | req_3 | req_4 | req_5 | req_6 | req_7 |
| 1 | Diploma | 40 | 1 | 3 | 4 | 4 | 6 | 7 | 8 |
要求表
| requirement_id | requirement_name |
| 1 | 1 x 1 picture |
| 2 | 2 x 2 picture |
| 3 | Registration form|
| 4 | Clearance |
| 5 | Medical cert |
| 6 | xray result |
| 7 | excuse letter |
| 8 | affidavit |
| 9 | comsoc clearance |
预期的结果是类似的文件表,但与相应的显示的要求了名他们身份证的价值。
我想知道正确的语法来查询这些
到目前为止,我的查询是:
SELECT * FROM document_tbl
WHERE requirement1,requirement2,requirement3,requirement4,requirement5,requirement6,requirement7
IN (
SELECT requirement_name FROM requirements_tbl WHERE requirement_id=requirement1,requirement2,requirement3,requirement4,requirement5,requirement6,requirement7)";
但我screwedup莫名其妙。先谢谢您的帮助。我会很感激。
像这样:
SELECT d.document_id,
d.document_name,
d.document_amount,
r1.requirement_name AS req_1,
r2.requirement_name AS req_2,
r3.requirement_name AS req_3,
r4.requirement_name AS req_4,
r5.requirement_name AS req_5,
r6.requirement_name AS req_6,
r7.requirement_name AS req_7
FROM documents AS d,
requirements AS r1,
requirements AS r2,
requirements AS r3,
requirements AS r4,
requirements AS r5,
requirements AS r6,
requirements AS r7
WHERE d.req_1 = r1.requirement_id
AND d.req_2 = r2.requirement_id
AND d.req_3 = r3.requirement_id
AND d.req_4 = r4.requirement_id
AND d.req_5 = r5.requirement_id
AND d.req_6 = r6.requirement_id
AND d.req_7 = r7.requirement_id
等。
这适用于@MartynasTumas。但正如他们上面所述。它以缓慢的方式处理输出,但它提供了准确的结果。谢谢 –
中间体表(document_requirements)
| document_id | requirement_id |
| 1 | 1 |
| 1 | 3 |
| 1 | 4 |
| 1 | 6 |
| 1 | 6 |
| 1 | 7 |
| 1 | 8 |
查询
SELECT d.document_id,dr.requirement_id,r.requirement_name
FROM documents AS d
JOIN document_requirements AS dr ON (dr.document_id=d.document_id)
JOIN requirements AS r ON (r.requirement_id=dr.requirement_id)
WHERE d.document_id = 1;
无法水平显示要求吗? @穆罕默德亚辛?不能用相应的名字显示吗? –
这可能与7个子选择,但如上面提到的其他人一样,这将是非常低效的。使用这种方法,您仍然可以循环查看结果,并获取上面查询中包含的名称,作为“r.requirement_name” –
@Mohammed Yasin我是否必须创建另一个名为document_requirements的表:如果是这样,那么名称是它包含的列?对不起,不回复。我忙于学校项目。 –
它与PHP有什么关系? – Aaron
你用这个查询得到了什么输出? – phil652
这是编写需求的低效方法。我建议你规范化你的数据库。参考这个:http://www.studytonight.com/dbms/database-normalization –