2012-02-06 7 views
1

イム:適切なJSONレスポンス

を、私は2つのテーブル、

TABLE order contains 
    pickup_address, 
    delivery_address 

両方のフィールドを持つ外部キーは

TABLE address contains, 
    id, 
    city 
を参照WICHています

もちろん、他の列はありますが、手元のクエリとは関係ありません。私は何をすべきか Basiclyは次のようになります。そのような

SELECT * from order LEFT join address ON (pickup = id) LEFT join address ON (delivery = id) 

何か:)だから私は、順番に2つのアドレスを組み合わせて行を持っています。それは私が考えるきれいな解決策ではありません。

私がしようとしているのは、ユーザーがこのオーダーのAPIを照会できるようにすることです。すべてのデータをどのように返すべきかはわかりません。

  • 注文TABLEの行のみを返して、それぞれのaddress_idの詳細をAPIにもう一度問い合わせさせますか?
  • すべてのテーブルを結合した完全な行を返しますか?
  • JSONで注文と住所を区別していますか?そのような:

    { 
    orders: [ 
    { 
        id: "1", 
        pickUpAddress: "1", 
        deliveryAddress: "2", 
    } 
        addresses: [ 
    { 
        id: "1", 
        .... 
    }, 
    { 
        id: "2", 
    } 
    ] 
    } 
    
    • その他のオプション?

Basiclyしかし私は、イム注文20+について毎回返信、現在のJSON応答を行いました。これは効率的ですか?

{ 
code: 200, 
data: { 
orders: [ 
{ 
id: "1", 
customer_id: "cust1", 
reference: "asdfad", 
state: "4", 
pickUpAddress: "1", 
pickUpDate: "2012-02-21", 
deliveryAddress: "2", 
deliveryDate: "2012-02-23", 
pickup_street: "street 1", 
pickup_housenumber: "1", 
pickup_country: "belgium", 
pickup_zipcode: "1000", 
pickup_city: "brussels", 
delivery_street: "street 2", 
delivery_housenumber: "2", 
delivery_country: "belgium", 
delivery_zipcode: "1000", 
delivery_city: "brussels" 
} 
] 
} 
} 

答えて

0

そうしない理由がない限り(大量の金額など)、すべてのデータが返されます。 なぜあなたはしませんか?

ただし、IDでアドレスを取得することもできます。できるだけ多くのオプションを与えてください。

+0

編集した私のorg post。これは効率的でしょうか? – Sam

+0

私はそれがより効率的であるかどうかにかかっていると思います。ユーザーは常にこれらすべての詳細を必要としていますか?もしそうなら、それらを提供するかもしれません。彼女が一度に1つの注文のアドレスを見る必要があるのであれば、彼女に2回別々の通話をさせてください。 –

+0

まあ私は何が欲しいかわからない。私は一度にそれらをすべて得る場合、ユーザーは1回だけ待つ必要があります。ユーザーが注文IDを選択したときにそれらを取得すると、私は再同期する必要があり、彼は毎回待たなければなりません。 – Sam

関連する問題