php - 合并两个已经使用 JOIN 的查询

标签 php mysql sql

我有两个单独的查询要合并。

SELECT e.id, e.measurement, e.name, weight, time, reps, distance, exerciseid, DATE(date) as date
FROM `users exercises` LEFT JOIN exercises as e ON e.id = exerciseid
WHERE `userid` = '24' AND `date` < now()
ORDER BY date DESC LIMIT 100

SELECT f.id, f.name, f.calories, f.protein, f.carbohydrate, DATE(date) as date, value, meal, unit
FROM `users foods` LEFT JOIN foods as f ON f.id = foodid
WHERE `userid` = '24' AND `date` < now()
ORDER BY date desc LIMIT 100

输出:

Array
(
    [id] => 489
    [measurement] => 2
    [name] => Dumbbell Stability Ball Press
    [weight] => 20
    [time] => 
    [reps] => 20
    [distance] => 
    [exerciseid] => 489
    [date] => 2013-08-01
)

Array
(
    [id] => 7
    [name] => Cheese, camembert
    [calories] => 300
    [protein] => 19.8
    [carbohydrate] => 0.46
    [date] => 2013-09-20
    [value] => 23
    [meal] => 3
    [unit] => 2
)

是否可以在保持相同输出的同时组合这些?

编辑:抱歉,我不清楚。我不想将这些查询连接在一起,我不想在此之后:

Array
(
    [id] => 672
    [measurement] => 1
    [name] => Ab Wheel (standing)
    [weight] => 
    [time] => 
    [reps] => 5
    [distance] => 
    [exerciseid] => 672
    [fid] => 23
    [fname] => Cheese, gruyere
    [calories] => 413
    [protein] => 29.81
    [carbohydrate] => 0.36
    [value] => 54
    [meal] => 1
    [unit] => 
)

我想保持数组与原始数组相同,但我不想使用两个查询,而是只想使用一个。如果可能的话。

最佳答案

这里假设一些东西,但是如果它们共享用户标识,您可以将所有这些表连接在一起

SELECT e.id, e.measurement, e.name, weight, time, reps, distance, exerciseid, 
  ue.DATE(date) as date, f.id, f.name, f.calories, f.protein, f.carbohydrate, uf.value,
  uf.meal, uf.unit
FROM `users exercises` 
LEFT JOIN exercises as e ON e.id = exerciseid
LEFT JOIN `user foods` as uf ON uf.userid = e.userid
LEFT JOIN `foods` as f ON f.userid = e.userid
WHERE `userid` = '24' AND `date` < now()
ORDER BY date DESC LIMIT 100

关于php - 合并两个已经使用 JOIN 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18917916/

相关文章:

python - 在 JetBrains PyCharm 中禁用 SQL 检测

php - 查询日期数组以仅显示 future 事件 - PHP

php - 插入一次,但在 MySQL 中创建了两条记录

php - 如何改进 MySQL 中的 IF 语句?

mysql - 无法在docker中使用mysql连接到数据库sonarqube

mysql - secure-file-priv 阻止 INTO OUTFILE 命令

mysql - 使用 count 函数对两个表中的记录进行计数,即使计数为零也返回相同的记录

php - 使用 php 对大型词典执行搜索

php - 从另一个 php 文件执行 php 文件使用太多 CPU

php - 通过 Php AltoRouter 路由