[英]Combine MySQL SELECT queries with IF statement
I want to combine my two SELECT
statements with an if statement. 我想将两个
SELECT
语句与一个if语句组合在一起。 Currently I am just getting the row and then doing if($row['activated'] === 1) { ... run 2nd select statement }
. 目前,我只是获取行,然后执行
if($row['activated'] === 1) { ... run 2nd select statement }
。
There has to be a better and much faster way of doing it (performance-wise). 必须有一个更好,更快的方法(性能方面)。 This is what I'm trying to do:
这就是我想要做的:
For example: (1st SELECT statement) 例如:(第一个SELECT语句)
$db = $stmt->("SELECT * FROM users WHERE id = :id AND activated = 1");
$db->bindParam(':id', $id);
$db->execute();
If that above SELECT
statement is true, then do this: (2nd SELECT statement) 如果上面的
SELECT
语句为true,则执行以下操作:(第二个SELECT语句)
$db = $stmt->("SELECT * FROM user_settings WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();
How can I combine those two SELECT statements? 如何合并这两个SELECT语句? If it is
else
or if activated = 0, then only do the first select. 如果是
else
,或者激活= 0,那么只有做的第一选择。
Bonus question: 奖励问题:
How can I make it three If statements? 如何使它成为三个 If语句? For example, the 2nd SELECT statement will be like this:
例如,第二个SELECT语句将如下所示:
$db = $stmt->("SELECT * FROM user_settings WHERE user_id = :user_id AND color = :color");
$db->bindParam(':user_id', $id);
$db->bindParam(':color', $color);
$db->execute();
Now if that statement is true, run this 3rd SELECT statement: 现在, 如果该语句为真,请运行以下第三个SELECT语句:
$db = $stmt->("SELECT * FROM friends WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();
You can merge/combine 您可以合并/合并
SELECT * FROM user_settings WHERE user_id = :user_id AND color = :color
and 和
SELECT * FROM friends WHERE user_id = :user_id
Into one query with a JOIN 用JOIN进入一个查询
SELECT
*
FROM
user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
AND
user_settings.color = :color
Or a other JOIN format 或其他JOIN格式
SELECT
*
FROM
user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
WHERE
user_settings.color = :color
Or you can write it as this JOIN. 或者,您可以将其编写为此JOIN。 (most likely slower)
(很可能较慢)
SELECT
*
FROM (
SELECT
*
FROM
user_settings
WHERE
user_settings.color = :color
) AS user_settings
INNER JOIN
friends
ON
user_settings.user_id = friends.user_id
The used method which is best/faster can/will be depending which indexes you have in use. 最好/更快使用的方法可以/将取决于您所使用的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.