我有两个单独的查询要合并。
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/