【发布时间】:2010-02-07 23:49:47
【问题描述】:
不知道为什么我无法弄清楚这一点。基本上,我有两个具有多对多关系的表,所以我在它们之间有一个联结表。
例如,考虑以下数据库架构:
Restaurant (id, restaurant_name, suburb)
RestaurantCuisine (restaurant_id, cuisine_id)
Cuisine (id, cuisine_name)
所以,很多餐厅可以有很多美食。
我尝试构建的查询将返回郊区存在的所有美食。一个SQL示例如下:
SELECT cuisine_name
FROM CuisineRestaurant
JOIN Cuisine ON Cuisine.id = CuisineRestaurant.cuisine_id
JOIN Restaurant ON Restaurant.id = CuisineRestaurant.restaurant_id
WHERE suburb LIKE '%x%';
这对我来说似乎很有意义。
如何使用 Zend_Db 实现这一点?
【问题讨论】:
-
到目前为止你尝试了什么?
-
嗨,戈登,经过多次反复试验,我想出了这个。它返回正确的数据,但似乎运行得很慢: $select = $this->select() ->setIntegrityCheck(false) ->distinct() ->from('CuisineRestaurant', array()) ->join( 'Cuisine', 'Cuisine.id = CuisineRestaurant.cuisine_id', array('id', 'cuisine')) ->join('Restaurant', 'Restaurant.id = CuisineRestaurant.restaurant_id', array()) ->where ('Restaurant.suburb = ?', $suburb) ->order('Cuisine.cuisine');
标签: mysql zend-framework many-to-many zend-db junction-table