php - MySQL SELECT 或 SUBSELECT 与 PHP

标签 php mysql sql select

我有一个查询的小问题,我不记得如何管理。 这是我在 phpmyadmin 上的数据库结构:

表用户

hid(PK)

表格请求

id (PK), hid, word, time

表格点击

id, rid (FK)

问题是我需要在给定的 hid 和两个日期之间获取每个单词的请求数和点击数,但我不记得该怎么做.

我尝试过选择所有单词然后在 while 循环中查询以选择请求和点击次数,但它总是超过 30 秒超时。

这就是我所做的,显然没有结果:

$q1="SELECT kwd,id FROM requests 
WHERE hid='$hid' 
AND time BETWEEN '$date1 $hour1:00:00' AND '$date2 $hour2:00:00'
LIMIT $limit,50";
$qr1=mysql_query($q1) or die (mysql_error());
while(($r=mysql_fetch_assoc($qr1))!=null)
{
    $k=$r['kwd'];
    $q2="SELECT * FROM requests 
    WHERE hid='$hid' 
    AND time BETWEEN '$date1 $hour1:00:00' AND '$date2 $hour2:00:00' 
    AND kwd='$k'
    LIMIT $limit,50";
    $qr2=mysql_query($q2) or die (mysql_error())
}

最佳答案

您可以使用 INNER JOIN 的组合, COUNT , 和 GROUP BY

$q1="SELECT r.kwd, COUNT(c.id) as NumberOfClicks FROM click c
INNER JOIN requests r ON r.id = c.rid
WHERE r.hid='$hid' 
AND r.time BETWEEN '$date1 $hour1:00:00' AND '$date2 $hour2:00:00'
GROUP BY r.kwd
LIMIT $limit,50";

$qr1=mysql_query($q1) or die (mysql_error());

while(($r=mysql_fetch_assoc($qr1))!=null)
{
    $k=$r['kwd'];
    $c=$r['NumberOfClicks'];
}

在上面的代码中,$k 是单词,$c 是相关单词的点击次数。

更新

如果您还想获得每个词的请求数,请使用 RIGHT JOIN,因为可能有没有任何相关点击的请求。

$q1="SELECT r.kwd, 
    COUNT(c.id) AS NumberOfClicks, 
    COUNT(r.kwd) AS NumberOfRequests
FROM click c
RIGHT JOIN requests r ON r.id = c.rid
WHERE r.hid='$hid' 
AND r.time BETWEEN '$date1 $hour1:00:00' AND '$date2 $hour2:00:00'
GROUP BY r.kwd
LIMIT $limit,50";

$qr1=mysql_query($q1) or die (mysql_error());

while(($r=mysql_fetch_assoc($qr1))!=null)
{
    $k=$r['kwd'];
    $c=$r['NumberOfClicks'];
    $requests=$r['NumberOfRequests'];
}

$k 是单词,$c 是点击次数,$requests 是请求次数相关词。

关于php - MySQL SELECT 或 SUBSELECT 与 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26160215/

相关文章:

php - 从 mysql 数据填充下拉列表(如果在单独的数据库中,则从下拉列表中删除)- php/html

java - 查询 LocalDateTime

php - 在 Laravel 中,如何在一秒钟内发出并发请求时避免重复记录

sql - Postgres 中的多级表聚合

PHP 5.6 生成器语法 : Can generators only be used in foreach loops?

javascript - 通过 javascript 将值传递给 php

php - AJAX 调用的自定义 PHP 错误

mysql - 需要 'LOAD DATA INFILE' 的指导

mysql - 设计这些表的最佳方式

mysql - 在mysql中创建关系表