首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取两个表的查询。

问获取两个表的查询。
EN

Stack Overflow用户
提问于 2014-04-16 17:00:21
回答 3查看 67关注 0票数 1

我用Yii实现了我的项目。我写了单表的查询,就像带条件的查询。

我想要编写从两个不同的表中调用的查询。我有食谱和配料表。配方表我有超过7个字段。recipe_id、菜名、course_id、type等另一种表格成分。id,ingredient_name。

代码语言:javascript
复制
$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";

我写了这个条件。我的搜索功能运行得很好。但我想从另一个表中显示,也就是配料表。

我可以写like查询吗??

EN

回答 3

Stack Overflow用户

发布于 2014-04-16 17:04:40

听起来你需要一个JOIN。然而,我认为食谱和配料在你的数据库中会有一个多对多的关系。您需要首先为它们创建一个associative table,然后使用INNER JOIN来链接这3个表。

如下所示:

代码语言:javascript
复制
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 */
票数 1
EN

Stack Overflow用户

发布于 2014-04-16 17:12:52

根据我的评论,你可以试试这个;

代码语言:javascript
复制
/* 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);
票数 1
EN

Stack Overflow用户

发布于 2014-04-16 17:18:34

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

查询将如下所示

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23104625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档