2016-05-20 6 views
0

初めてデータを迅速なApp(iOS)にインポートするAPIを作成しています しかし、すべての結果が2回表示されます。属しているか間違った順序になっています...API、結果が2回表示され、正しい順序で表示されない

私はいくつかのテーブルを持っているからだと思います。

例:

$ sqlを= "ノード、field_data_body SELECT * FROM"; // Drupalテーブル

WHEREステートメントについて聞いたことがありますが、手がかりはありません。

答えて

1

複数のテーブルから選択すると、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の良い視覚的表現です。

0

おそらくテーブルnodefield_data_bodyに同じデータが含まれていますか?あなたのselecte * fromステートメントは、それがはっきりしていない場合、すべてを取るでしょう。

+0

field_date_bodyにはentity_type(node)....があります。おそらくあなたは何かAMomchilovにいるかもしれませんが、この問題を回避するにはどうすればいいですか? –

+0

さて、あなたが私に話したことを与えられているか、そうではないのか、あなたにはあまり伝えられません。どのデータを持っているのか、どのデータが必要なのかをIDKで確認してください。 – Alexander

1

私の知る限り、Drupalのからデータを照会するエンティティのAPIを使用することをお勧めします、ここで文書がある知っているように、https://www.drupal.org/node/1343708

そして、あなたはまた、表示モジュールを使用してクエリを設定し、出力を設定することができますJSON。

3番目のオプションはhttps://www.drupal.org/project/rest_serverモジュールを使用している可能性があります。

+0

Thx all、私はこれを大いに学びました。 私の場合の解決策は次のとおりです。 $ sql = "SELECT * FROM node LEFT JOIN field_data_body ON node.nid = field_data_body.entity_id"; –

関連する問題