我在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";
我写了这个条件。我的搜索功能运作良好。但我想从另一张表中显示,即成分表。
我可以写像查询吗?答案 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();