获取两个表的查询。

时间:2014-04-16 09:00:21

标签: php mysql yii

我在Yii实施了我的项目。我为单个表写了查询条件查询。

我想从两个不同的表中编写查询来调用。我的餐桌是食谱和配料表。配方表I超过7个字段。 recipe_id,cuisinename,course_id,type等另一种表成分。 id,ingredient_name。

$result="SELECT * FROM recipe WHERE name LIKE '%$name%' AND `cuisinename` LIKE 
'$cuisine1%' AND course_id  LIKE '%$course1%' AND `type` LIKE '%$type1%' 
AND `calorie_count` LIKE '$calorie1%' ORDER BY recipe_id DESC";

我写了这个条件。我的搜索功能运作良好。但我想从另一张表中显示,即成分表。

我可以写像查询吗?

3 个答案:

答案 0 :(得分:1)

听起来你需要JOIN。但是我想象Recipe和Ingredients在你的数据库中会有很多关系。您需要先为associative table制作INNER JOIN,然后使用SELECT /* you stuff */ FROM recipe_ingredients ri INNER JOIN recipe r ON ri.recipe_id = r.id INNER JOIN ingredients i ON ri.ingredient_id = i.id WHERE /* do you like stuff here */ 链接3个表格。

这样的事情:

{{1}}

答案 1 :(得分:1)

继续我的评论,你可以试试这个;

/* first query */
$query = "SELECT * FROM recipe WHERE name LIKE '%$name%' AND `cuisinename` LIKE '$cuisine1%' AND course_id  LIKE '%$course1%' AND `type` LIKE '%$type1%' AND `calorie_count` LIKE '$calorie1%' ORDER BY recipe_id DESC";
$result = $mysqli->query($query);

/* numeric array */
$ret1 = $result->fetch_array(MYSQLI_NUM);

/* second query */
$query = "Whatever is in your second query?"; //add your second query here..
$result = $mysqli->query($query);

/* numeric array */
$ret2 = $result->fetch_array(MYSQLI_NUM);

/*final result set */
$result = array_merge((array)$ret1, (array)$ret2);

答案 2 :(得分:1)

如果您使用的是Yii,请使用查询构建器http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder

查询将如下所示

Yii::app()->db->createCommand()
    ->select('*, i.ingridient_name')
    ->from('recipe t')
    ->join('ingredients i', 'i.recipe_id=t.id')
    ->where('name LIKE :name AND `cuisinename` LIKE 
          :cuisine1 AND course_id  LIKE :course1 AND `type` LIKE :type1 
          AND `calorie_count` LIKE :calorie1', array(
          ':name'=>'%'.$name.'%',
          ':cuisine1'=>'%'.$cuisine1.'%',
    ))
    ->order('recipe_id DESC')
    ->queryAll();