我试图查询以下内容。基本上客户可以有多种类别。我有一个类别复选框的列表,并希望只显示所选类别的客户端。我一直在尝试使用内部连接,但我的SQL仍处于起步阶段,而且我很明显错误。任何建议不胜感激。谢谢阅读。多对多SQL查询加入
我的表布局:http://www.uk-wired.co.uk/images/sample.jpg
我试图查询以下内容。基本上客户可以有多种类别。我有一个类别复选框的列表,并希望只显示所选类别的客户端。我一直在尝试使用内部连接,但我的SQL仍处于起步阶段,而且我很明显错误。任何建议不胜感激。谢谢阅读。多对多SQL查询加入
我的表布局:http://www.uk-wired.co.uk/images/sample.jpg
select * from clients join clientscategories on clients.idclient=clientscategories.idclient join categories on clientscategories.idcat=categories.idcat WHERE clientscategories.idcat IN (v1,v2,......)
我想你可以试试这个,请提供您从复选框选择到V1的值,v2 ...
感谢这是解决方案,但是,如果客户端存在多个类别,他们多次被查询检索。我怎样才能调整查询,只让客户端检索一次。谢谢 – macmilm
select * from clients join clientscategories on clientscategories.clientid=clients.clientid where clientscategories.idcat IN (value1,value2,......)
我希望这虚拟查询来帮你实现你的目标。
首先,您应该在客户端表中添加另一列,如'状态'。而在代码级别,你应该拿一个变量来保存一个字符串,如选中或取消选中。申请条件像
if(checkbox.checked)
status = "selected";
else
status = "Unselected";
then insert client.
后,你可以申请查询像...
select clientscategories.idclients, clientscategories.idcat, cleints.title etc.. from clientscategories join categories
on clientscategories.idcat = categories.idcat
join clients
on clientscategories.idclient = clients.idclients
where clients.status = 'Selected'
到目前为止你的SQL语句是什么? – Smutje
我的大脑终于搞定了,我差点到了:SELECT * FROM photosms.clients INNER JOIN photosms.clientscategories ON photosms.clientscategories.idclient = photosms.clients.idclient WHERE photosms.clientscategories.idcat = 12或photosms.clientscategories .idcat = 16;值将被替换为复选框值。一个问题,但。如果客户端存在于多个类别中,那么他们将被多次检索,如果可能,我将如何调整查询以仅让客户端拥有一次。谢谢 – macmilm