0

表关系图像在此链接中http://www.serofero.net/mvb-table-relation.png

我使用 php 作为服务器端编程语言,使用 MySQL 作为数据库。

问题描述

用户添加了一个新场地。一个场所可能有多种饮料、活动、特色等等。现在,我想要这样一个查询或魔术,以便我可以收集与每个场地相关的所有饮料、活动、功能、食物、样式、类型、event_options 和 space_requirements 以及它的场地_id、名称、描述、容量、min_rate、max_rate、位置(来自位置表)。我还需要抵消和限制结果,以便我可以在后端实现分页。但挑战在于限制应该限制场馆的数量,而不是其饮料、食物、风格等。

我也想在 php 数组中收集结果,如下所示:

    $结果 = 数组(
    0=> 数组(
    "名称" => "场地 A",
    "描述" => "场地 A 描述",
    "容量" => "场地 A 容量",
    "位置" => "场地 A 位置",
    "饮料" => 数组('beverage1','beverage23','beverage7',...),
    "事件" => 数组('event8','event17','event19','event4',...),
    "特征" => 数组('features1',...),
    “食物” => 数组(),
    “样式” => 数组(),
    "类型" => 数组('type7', 'type14', 'type23',...),
    “事件选项” => 数组(),
    “space_requirements” => 数组()
    )
    ,
    1=> 数组(
    "名称" => "场地 B",
    "描述" => "场地 B 描述",
    "容量" => "场地 B 容量",
    "位置" => "场地 B 位置",
    “饮料” => 数组('beverage1'),
    "事件" => 数组('event2','event7','event9','event4',...),
    “特征” => 数组(),
    “食物” => 数组(),
    "样式" => 数组('style1', 'style2',...),
    “类型” => 数组('type47','type4','type3',...),
    “事件选项” => 数组(),
    “space_requirements” => 数组()
    )
    );

今天是第五天,我试图找出解决方案,但我一直都失败了。下面是到目前为止我可以编写的 MySQL Query 的片段。

    选择 v.name、e.event、t.type、s.style
    从场地 v

    左加入venue_events ve ON v.venue_id = ve.venue_id
    LEFT JOIN 事件 e ON e.event_id = ve.event_id

    左加入venue_types vt ON v.venue_id = vt.venue_id
    左连接类型 t ON t.type_id = vt.type_id

    左加入venue_styles vs ON v.venue_id = vs.venue_id
    LEFT JOIN 样式 s ON s.style_id = vs.style_id

    WHERE v.venue_id IN(从场地中选择场地 ID)限制 0,5
    /* 我想限制“场地”的数量,但 LIMIT 0,5 限制了“场地”拥有的“事件”、“类型”、“样式”的数量。这是主要问题。

    我也试过:
    WHERE v.venue_id IN (SELECT avenue_id FROM places LIMIT 0,5) 但它会引发 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 回答