我有以下用于模板表的数据(样本)
TempName, ItemID
Test1, 1/5/6/8/11
Test2, 2/4/5/8/10
因此,我想进行一个SQL查询,该查询将与项目表联接并返回在ItemID字段中匹配/存在的所有数据行
类似: 选择* From Items.Item = ID.Template.ItemID的项目内部联接模板,其中模板名称='Test1';
我无法确定正确的sql查询,因此,现在我正在使用for循环,但是我更喜欢使用衬板或更好的查询/脚本来处理该问题。
当前我的代码如下:
Select ItemID From Template Where Name = 'Test1';
$strItems = explode('/', ItemID)
foreach($strItem in $strItems)
{
select * from Items where ID = $strItem
}
那不是漂亮/格式正确的代码,而是显示我现在的工作方式。 但我正在寻找更好的方法:)
最好的问候
答案 0 :(得分:1)
您可以在此处使用FIND_IN_SET
,只需一个查询:
SELECT i.*
FROM Items i
INNER JOIN Template t
ON FIND_IN_SET(i.ID, REPLACE(t.ItemID, '/', ',')) > 0
WHERE
t.Name = 'Test1';
但是请注意,根本不像在Template
表中那样存储未标准化的数据。最好将ItemID
值存储在单独的行中。