猿问

我可以通过关系在单个查询中获取所有需要的数据吗?

我正在尝试优化我的 SQL 查询。我实际上使用 yii2 框架来操作数据。我可以在 MySQL 控制台中使用关系查询所需的数据,查询将如下所示:


SELECT * FROM user u

 LEFT JOIN relation_user_shop rus ON rus.userId = u.id

 LEFT JOIN shop s ON s.id = rus.shopId

 ORDER BY u.id LIMIT 20

它向我查询我需要的正确数据,但它仅适用于 mysql。当我尝试将数据返回到 yii2 时,我也得到了混合 id(相关表的主键:用户、商店)和其他数据混合。我知道,我可以在 3 次,一个接一个:


1. get user

2. select shop ids in junction table

3. query data from shop, and concate with user object

可以在 ONE 查询中完成吗?


呼唤远方
浏览 183回答 1
1回答

慕丝7291255

如果你需要在查询了严格的控制研究与表之间equale时获得所有你需要不同的列名alais管理列一个简单的(和性能方法)是DB-> createCommand基地queryAll() 返回一个包含所有选定行的数组 ob 对象$q =    'SELECT u.col1  , u.col2  , u.col3  , rus.col1 as rus_col1  , rus.col2 as rus_col2  , s.col1 as s_col1  , s.col2 as s_col2   FROM user u  LEFT JOIN relation_user_shop rus ON rus.userId = u.id  LEFT JOIN shop s ON s.id = ;';$models =   Yii::$app->db->createCommand( $q )->queryAll(); 
随时随地看视频慕课网APP
我要回答