[英]How to echo results with join names from another table using nl2br
我知道如何使用以下命令回显数组中的结果
nl2br(str_replace(',', "\n", $row['column-name']))
现在,我有一列,其中列出的项目(用逗号分隔)是与另一个表相对应的ID号。
我如何回显这些结果并相对于其ID应用与该项目关联的名称?
我已经尝试过INNER JOIN,但是我似乎缺少如何正确执行此操作。
'SELECT * FROM Table1
INNER JOIN Table2 ON Table1.ColumnName = Table2.ColumnID
INNER JOIN Table3 ON Table1.ColumnID2 = Table3.ColumnID2 <-- This needs to apply names to the number-ids split by the nl2br
ORDER BY OrderColumn'
<span>'.nl2br(str_replace(',', "\n", $row['table3-column-name-to-replace-table1-columnID2'])).'</span>
谢谢你的帮助。
这是预期的结果。 https://drive.google.com/file/d/1ChGv9qHeJPgtwVcxbqj8ey-1RjVTah28/view?usp=sharing
要获取出现在Table1
列表中的所有Table3
行,您需要相应地更改JOIN:
SELECT
Table1.CoverageArea,
Table2.stateName as State,
GROUP_CONCAT(Table3.CountName SEPARATOR '\n') as County
FROM
Table1
INNER JOIN Table2
ON Table1.State = Table2.ID
INNER JOIN Table3
ON Table1.Counties LIKE Table3.ID+ ',%'
OR Table1.Counties LIKE '%,' + Table3.ID+ ',%'
OR Table1.Counties LIKE '%,' + Table3.ID
OR Table1.Counties = Table3.ID
GROUP BY TABLE1.CoverageArea
ORDER BY TABLE1.CoverageArea ASC;
结果将是:
[
['John Doe', 'Missouri', 'Apple County
Orange County
Grape County
Banana County']
]
不利的一面是,数据库需要在每一行上执行多个文本比较,这意味着这是执行JOIN
的非常慢的方法。
更好的解决方案是编辑Table3
使其不仅拥有自己的ID,而且还拥有Table1
的ID作为外键/父引用。
START TRANSACTION;
ALTER TABLE Table3 ADD coverageAreaID INT NOT NULL;
ALTER TABLE Table3 ADD CONSTRAINT fk_covarea_state FOREIGN KEY (coverageAreaID) REFERENCES Table1(ID);
UPDATE Table3 SET coverageAreaID = (
SELECT
Table1.ID
FROM
Table1
WHERE
Table1.Counties LIKE Table3.ID + ',%'
OR Table1.Counties LIKE '%,' + Table3.ID + ',%'
OR Table1.Counties LIKE '%,' + Table3.ID
OR Table1.Counties = Table3.ID
LIMIT 1;
);
COMMIT;
这样,您可以使用以下SQL查询:
SELECT
Table1.CoverageArea,
Table2.stateName as State,
GROUP_CONCAT(Table3.CountName SEPARATOR '\n') as County
FROM
Table1
INNER JOIN Table2
ON Table1.State = Table2.ID
INNER JOIN Table3
ON Table1.ID = Table3.coverageAreaID
GROUP BY TABLE1.CoverageArea
ORDER BY TABLE1.CoverageArea ASC;
现在,此查询将导出与上面相同的结果,但是它将更快,因为它可以通过简单的数字比较将表连接在一起。
现在,使用代码应该没有问题:
nl2br($ row ['County'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.