有限制地从多个多对多关系表中检索结果


Retrieving result from multiple many to many relation tables with limit

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

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

问题描述

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

我也想收集php数组的结果如下:

<>之前$result = array(0 =>阵列("名称"=>"地点A","description" => "场地A描述","容量"=>"场地A容量","地点"=>"地点A地点","饮料"=>阵列(‘beverage1’,‘beverage23’,‘beverage7’,…),"事件"=>阵列(‘event8’,‘event17’,‘event19’,‘event4’,…),"features" => array('features1',…),"foods" => array(),"styles" => array(),"类型"=>阵列(‘type7’,‘type14’,‘type23’,…),"event_options" => array(),"space_requirements" => array()),1 =>阵列("名称"=>"场地B","描述"=>"场地B的描述","容量"=>"场地B容量","地点"=>"场地B地点","beverages" => array('beverage1'),"事件"=>阵列(‘event2’,‘event7’,‘event9’,‘event4’,…),"features" => array(),"foods" => array(),"styles" => array('style1', 'style2',…),"types" => array('type47', 'type4', 'type3',…),"event_options" => array(),"space_requirements" => array()));之前

今天是第五天,我试图找出解决方案,但我一直失败。下面是我到目前为止写的MySQL查询代码片段。

<>之前SELECT name, event, type, style从场馆5LEFT JOIN venue_events ve ON v.v uue_id = ve.venue_idLEFT JOIN事件ON .event_id = ve.event_idLEFT JOIN venue_types vt ON v.v ue_id = vt.venue_idLEFT JOIN类型t ON t.type_id = t.type_id左JOIN venue_styles vs. ON v.v uue_id = vs.venue_idLEFT JOIN styles ON s.style_id = vs.style_idWHERE v.p ue_id IN (SELECT veue_id FROM场馆)LIMIT 0,5/*我想限制"场地"的数量,但是limit 0,5限制了"场地"拥有的"事件"、"类型"、"风格"的数量。这是主要问题。我也试过:WHERE v.venue_id IN (SELECT venue_id FROM场馆限制0,5),但它引发MySQL错误。*/之前

但是我不知道下一步该怎么做才能得到我上面提到的结果。

请帮帮我。

谢谢。

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