首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql多表查询语句

Mysql多表查询语句
EN

Stack Overflow用户
提问于 2011-05-23 21:29:49
回答 3查看 76关注 0票数 0

我有一个表,如下所示

代码语言:javascript
复制
Ads Table
user_id ad_id   title             message   repost_days_id   repost_times_id
   1      1     Message Title 1   Message   1                1
   1      1     Message Title 2   Message   0                0

Repost Days Table:
repost_days_id   Value
1                5

Repost Times Table:
Repost_times_id   value
1                 10

现在,我想查询ads表,以显示包含广告标题、广告消息、转发天数和转发次数的广告。例如,对于广告1,它将是

代码语言:javascript
复制
Message Title 1
Message Repost Days=10
Repost Times=5.

我该如何为它编写sql语句呢?这就是我所做的,没有显示任何结果。

代码语言:javascript
复制
$q = "
select
    a.ad_id,
    a.title,
    a.message,
    rt.value,
    rd.value,
from
    ad_repost_times rt,
    ad_repost_days rd, 
    ads a 
where
    a.user_id='{$_SESSION['user_id']}' 
and rt.repost_times_id=a.repost_times_id 
and rd.repost_days_id=a.repost_days_id
";
EN

回答 3

Stack Overflow用户

发布于 2011-05-23 21:39:53

查询无法满足a.user_id='{$_SESSION['user_id']}'条件,因为ads表中没有user_id字段。

票数 1
EN

Stack Overflow用户

发布于 2011-05-23 21:55:20

  1. 在字段列表的末尾似乎有一个额外的逗号。这将导致在执行查询时首先出现问题。
  2. your a.user_id='{$_SESSION['user_id']}'意味着当你在SQL查询中提交你的用户id时,你的用户id周围会有一个大括号。如果$_SESSION['user_id']包含整数1234,那么您的查询将类似于a.user_id='{1234}'。(请注意,如果您在整个代码中都犯了相同的错误,那么这个“错误”实际上可能不是问题的原因。)
  3. 以下内容不是问题的直接原因,但出于安全原因,它很重要,而且它可以避免#2中的问题:您需要删除变量替换a.user_id='{$_SESSION['user_id']}',并将其更改为与a.user_id=?的参数绑定,以避免SQL注入攻击(同时也巧合地消除了导致问题#2的输入错误)。
  4. 要处理repost_days_id中的默认值0,repost_times_id您需要使用LEFT JOIN,如下所示:

$q =“select a.ad_id,a.title,a.message,rt.value,rd.value from ads a LEFT JOIN ad_repost_times rt ON rt.repost_times_id=a.repost_times_id LEFT JOIN ad_repost_days rd ON rd.repost_days_id=a.repost_days_id a.user_id=‘{$_SESSION’‘user_id’}‘";

对于id为0的行,rt.valuerd.value的结果将为null。

注意,我已经对表进行了重新排序(ads a需要放在第一位,否则您需要在某些地方使用RIGHT JOIN而不是LEFT JOIN),并且表名之间不应该再有逗号。(LEFT JOIN代替逗号)。

票数 1
EN

Stack Overflow用户

发布于 2011-05-23 21:36:15

此查询执行时是否没有任何错误?

从您的表结构来看,Ads表似乎没有字段user_id,您正在对其进行查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6097900

复制
相关文章

相似问题

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