【发布时间】:2016-03-27 17:24:44
【问题描述】:
我尝试了不同的方法来做到这一点,但是......所以,我的最后一个选择是寻求帮助。
我有 3 个数据库表。在 OBJECTS 表中,我存储了每个网站的 OBJECTS,例如过滤器名称、SAM 和 SAMP 名称(特定于系统)。在 ITEMS 中,我存储了系统的所有项目(这些是具有更多选项的真实世界项目)和 OBJECTS_LINKED,我将每个链接的元素存储在 OBJECTS 和 ITEMS 中。
然后,我得到了系统,用户可以从过滤器中选择一些选项,然后我得到了项目列表...例如,在 OBJECTS_LINKED 我有 3 个名称为过滤器的项目,这些将被显示,但我需要什么,哪里有问题。我需要在列表中显示这些项目,例如由 ASC 排序的 OBJECTS 名称。
现在,除了订购外,一切正常。代码是用 PHP 编写的。我得到了 SQL 查询,我得到了这些项目 id,其中名称是从链接的对象中筛选,然后有循环,我得到所有对象 id,其中对象名称是 SAM 或 SAMP,并且它与项目 id 链接,我从 OBJECTS 得到这个LINKED 和 OBJECTS with INNER JOIN ...但问题是,当我第一次得到这些项目 id 时,它们按某种顺序排列,在下一个循环中它不计算我的 SQL QUERY ORDER BY,但他正在循环告诉...所以,我认为,这可以在没有此循环的情况下在一个查询中进行,但我不知道如何,因为我不擅长 SQL。
---- 对象 ---- id - 内容 - 名称 1 - 1.2。文本 - SAM 2 - 1.3。文本 - SAMP 3 - 1.1。文本 - SAM 4 - 过滤器 - 过滤器 - - 项目 - - id - 一些列... 1 - ... 2 - ... 3 - ... ---- OBJECTS_LINKED ---- id - obj_id - item_id - 名称 id - 1 - 1 - SAM id - 2 - 1 - 过滤器 id - 4 - 2 - SAM id - 3 - 3 - SAMP $SQL = "SELECT * FROM OBJECTS_LINKED WHERE obj_id = '$obj_id' AND link_name = 'FILTER'"; 尽管(){ $SQL = "SELECT ol.*, o.obj_content, i.item_type, i.item_kartina FROM OBJECTS_LINKED AS ol INNER JOIN ITEMS AS i ON i.item_id = ol.item_id INNER JOIN OBJECTS AS o ON o.obj_id = ol.obj_id WHERE ol.item_id = '$item_id' AND if(i.item_type = 'SAM', link_name = 'SAM', link_name = 'SAMP') 按 o.obj_content ASC 排序"; 尽管(){ ---- 项目列表(SAM 或 SAMP)名称 ---- } }【问题讨论】:
-
变量
$item_id在你第一次选择查询的第二次查询结果中吗? -
考虑添加完整代码:您显示代码的方式令人困惑,对我们没有帮助。
-
@Reversal 是的,是的
-
您能否编辑您的答案并以
TableAlias.FieldName格式指定您想要的结果?正如我之前所说,完整的代码也会有所帮助。