0

我在数据库中有这张表,它叫data 表数据

我想做这个sql

     $sql = mysql_query("SELECT $menucompare,( substr($menucompare, 13, 2)) AS dayname FROM data WHERE ... ");

观测值

    $menucompare // is variable which the date is selected from table(date or date2 or date3..) 

假设我们04/10/2012-(Tuesday)在一周6内的表中有这个日期w_date,所以在减去它在 sql 中所说的之后,它将是Tu

第 7 周有 2 个日期之一。我想要的是每周输出按天排序的天名

像这样的例子

  week 7

   Tu
   Fr
   .
   .

或者

week 6
Tu
.
.

这会发生吗?这里有特殊WHERE条款吗?是否可以编写 sql 来计算一周中有多少个日期,例如第 7 周有多少个日期,在第 7 周的表格中有 2 个

4

1 回答 1

1

您在这里问了几个不同的问题,但在我尝试直接解决它们之前,可能值得考虑(如果可能的话)将date列的数据类型更改为DATE类型,然后使用诸如DATE_FORMAT(`date`, "%a")获取第一个相关日期名称的字符。

此外,在将其他语言的变量插入 SQL 语句时,请务必小心避免恶意 SQL 注入:考虑使用准备好的语句。可悲的是,在这种情况下,由于您的数据库设计,您会偶然发现另一个问题:有关更多信息,请参阅此问题

关于你的问题:

  1. 这[显示的示例输出]会发生吗?

    是的,它可以。您想对结果进行“分组”,因此请查看语句的GROUP BY子句SELECT。尝试如下命令:

    SELECT
      `w_date`,
      GROUP_CONCAT(SUBSTR(`date`, 13, 2) SEPARATOR "\n") AS `daynames`
    FROM `data`
    WHERE ...
    GROUP BY `w_date`;
    

    如您所见,结果以您想要的方式分组 - 但日期缩写列表是周数的单独结果列;准确地输出如图所示的数据是必须在应用程序级别进行的进一步操作。

  2. 是否可以编写 sql 来计算一周中有多少个日期,例如第 7 周有多少个日期

    是的,一点没错。要获取给定一周的记录总数:

    SELECT COUNT(*) FROM `data` WHERE `w_date` = 7;
    

    或者对于给定一周内的不同天数:

    SELECT COUNT(DISTINCT `date`) FROM `data` WHERE `w_date` = 7;
    

    或者每周得到这样的:

    SELECT `w_date`, COUNT(*) FROM `data` GROUP BY `w_date`;
    
于 2012-04-22T21:21:11.417 回答