0

テーブル関係の画像はこのリンクにあります http://www.serofero.net/mvb-table-relation.png

サーバー側のプログラミング言語としてphpを使用し、データベースとしてMySQLを使用しています。

問題の説明

ユーザーが新しい会場を追加します。1 つの会場には、複数の飲み物、イベント、機能などが含まれる場合があります。ここで、そのようなクエリまたはマジックが必要なため、各会場に関連するすべての飲み物、イベント、機能、食品、スタイル、タイプ、event_options、および space_requirements をその会場 ID、名前、説明、容量、min_rate、max_rate とともに収集できます。場所 (場所テーブルから)。また、バックエンドでページネーションを実装できるように、結果をオフセットして制限する必要があります。しかし、課題は、制限は、飲み物、食べ物、スタイルなどではなく、会場の数を制限する必要があるということです.

以下のように、結果をphp配列に収集することも考えています。

    $結果 = 配列(
    0=>配列(
    "名前" => "会場A",
    "説明" => "会場Aの説明",
    "capacity" => "会場A定員",
    "場所" => "会場Aの場所",
    "beverages" => array('beverage1','beverage23','beverage7',...),
    "events" => array('event8','event17','event19','event4',...),
    "features" => array('features1',...),
    "食品" => 配列()、
    "スタイル" => 配列(),
    "types" => array('type7', 'type14', 'type23',...),
    "event_options" => 配列(),
    "space_requirements" => 配列()
    )
    、
    1=>配列(
    "名前" => "会場B",
    "説明" => "会場Bの説明",
    "capacity" => "会場B定員",
    "場所" => "会場Bの場所",
    "飲料" => 配列('飲料1'),
    "events" => array('event2','event7','event9','event4',...),
    「機能」=>配列()、
    "食品" => 配列()、
    "styles" => array('style1', 'style2',...),
    "types" => array('type47', 'type4', 'type3',...),
    "event_options" => 配列(),
    "space_requirements" => 配列()
    )
    );

今日は5日目で、解決策を見つけようとしていますが、ずっと失敗しています。以下は、これまでに作成できた MySQL クエリのスニペットです。

    SELECT v.name、e.event、t.type、s.style
    FROM 会場 v

    LEFT JOIN 会場イベント ve ON v.venue_id = ve.venue_id
    LEFT JOIN イベント e ON e.event_id = ve.event_id

    LEFT JOIN 会場の種類 vt ON v.venue_id = vt.venue_id
    LEFT JOIN 型 t ON t.type_id = vt.type_id

    LEFT JOIN 会場スタイル vs ON v.venue_id = vs.venue_id
    LEFT JOIN スタイル s ON s.style_id = vs.style_id

    WHERE v.venue_id IN (会場から会場 ID を選択) LIMIT 0,5
    /* 「会場」の数を制限したいのですが、LIMIT 0,5 は「会場」が持つ「イベント」、「タイプ」、「スタイル」の数を制限します。そして、これが主な問題です。

    私も試しました:
    WHERE v.venue_id IN (会場 LIMIT 0,5 から会場 ID を選択) しかし、MySQL エラーが発生します。
    */

しかし、上で述べたように、結果を得るために次に何をすべきかわかりません。

私を助けてください。

ありがとうございました。

4

1 に答える 1

0
SELECT DISTINCT ven.venue_id, ven.name, e.event_id, e.event, t.type_id, t.type, s.style_id, s.style

FROM (SELECT * FROM venues v LIMIT 0,5) ven /*This line does magic for me*/

LEFT JOIN venue_events ve ON ven.venue_id = ve.venue_id
LEFT JOIN events e ON e.event_id = ve.event_id

LEFT JOIN venue_types vt ON ven.venue_id = vt.venue_id
LEFT JOIN types t ON t.type_id = vt.type_id

LEFT JOIN venue_styles vs ON ven.venue_id = vs.venue_id
LEFT JOIN styles s ON s.style_id = vs.style_id
于 2013-06-11T05:13:30.053 に答える