代码之家  ›  专栏  ›  技术社区  ›  Willem Massoels

API,显示两次结果,但顺序不正确

  •  0
  • Willem Massoels  · 技术社区  · 10 年前

    我第一次创建一个API,将数据导入swift应用程序(iOS) 但是我两次得到了所有的结果,结果不知道它们属于哪里,或者它们的顺序不对。。。

    我想这是因为我有几张桌子。

    例如:

    $sql=“SELECT*FROM node,field_data_body”; //Drupal表

    我听说过WHERE语句,但一无所知。

    3 回复  |  直到 10 年前
        1
  •  1
  •   Set    10 年前

    你所做的是 implicit cross JOIN ,当您从多个表中选择时。如果在WHERE子句中不使用条件,则可以得到这些表的所有组合。

    如果表是完全独立的,则可以为每个表创建两个不同的SELECT查询。

    否则,如果它们之间存在关系,则应选择最适合您的目标的JOIN类型之一,并使用WHERE条件在查询中描述其关系。

    假设节点表有“id”列,field_data_body有“node_id”列。然后可以进行以下查询:

    SELECT * FROM node 
    LEFT JOIN field_data_body ON node.id = field_data_body.node_id
    

    还是一样的

    SELECT * FROM node 
    LEFT JOIN field_data_body WHERE node.id = field_data_body.node_id
    

    Here 是SQL JOIN的良好可视化表示。

        2
  •  1
  •   hailong    10 年前

    据我所知,建议使用实体API从Drupal查询数据,这里有一个文档, https://www.drupal.org/node/1343708

    您还可以使用View模块设置查询,并将输出设置为JSON。

    第三种选择可能是使用 https://www.drupal.org/project/rest_server 单元

        3
  •  0
  •   Alexander    10 年前

    也许是桌子 node field_data_body 包含相同的数据?你的 selecte * from 如果不明显的话,声明将占据一切。