初めてデータを迅速なApp(iOS)にインポートするAPIを作成しています しかし、すべての結果が2回表示されます。属しているか間違った順序になっています...API、結果が2回表示され、正しい順序で表示されない
私はいくつかのテーブルを持っているからだと思います。
例:
$ sqlを= "ノード、field_data_body SELECT * FROM"; // Drupalテーブル
WHEREステートメントについて聞いたことがありますが、手がかりはありません。
初めてデータを迅速なApp(iOS)にインポートするAPIを作成しています しかし、すべての結果が2回表示されます。属しているか間違った順序になっています...API、結果が2回表示され、正しい順序で表示されない
私はいくつかのテーブルを持っているからだと思います。
例:
$ sqlを= "ノード、field_data_body SELECT * FROM"; // Drupalテーブル
WHEREステートメントについて聞いたことがありますが、手がかりはありません。
複数のテーブルから選択すると、implicit cross JOINとなります。 WHERE句に条件を使用しないと、それらのテーブルのすべての組み合わせがありました。
テーブルが完全に分離/独立している場合は、テーブルごとに2つの異なるSELECTクエリを作成できます。
これらの間に関係がある場合は、目標に最も適したJOINタイプの1つを選択し、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の良い視覚的表現です。
おそらくテーブルnode
とfield_data_body
に同じデータが含まれていますか?あなたのselecte * from
ステートメントは、それがはっきりしていない場合、すべてを取るでしょう。
私の知る限り、Drupalのからデータを照会するエンティティのAPIを使用することをお勧めします、ここで文書がある知っているように、https://www.drupal.org/node/1343708
そして、あなたはまた、表示モジュールを使用してクエリを設定し、出力を設定することができますJSON。
3番目のオプションはhttps://www.drupal.org/project/rest_serverモジュールを使用している可能性があります。
Thx all、私はこれを大いに学びました。 私の場合の解決策は次のとおりです。 $ sql = "SELECT * FROM node LEFT JOIN field_data_body ON node.nid = field_data_body.entity_id"; –
field_date_bodyにはentity_type(node)....があります。おそらくあなたは何かAMomchilovにいるかもしれませんが、この問題を回避するにはどうすればいいですか? –
さて、あなたが私に話したことを与えられているか、そうではないのか、あなたにはあまり伝えられません。どのデータを持っているのか、どのデータが必要なのかをIDKで確認してください。 – Alexander