Объедините MySQL SELECT-запросы с оператором IF - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу объединить мои два SELECT оператора с оператором if.В настоящее время я просто получаю строку, а затем выполняю if($row['activated'] === 1) { ... run 2nd select statement }.

Должен быть лучший и гораздо более быстрый способ сделать это (с точки зрения производительности).Вот что я пытаюсь сделать:

Например: (1-й оператор SELECT)

$db = $stmt->("SELECT * FROM users WHERE id = :id AND activated = 1");
$db->bindParam(':id', $id);
$db->execute();

Если , что выше SELECT утверждение истинно, тосделать это: (2-й оператор SELECT)

$db = $stmt->("SELECT * FROM user_settings WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();

Как я могу объединить эти два оператора SELECT?Если это else или если активировано = 0, то только первый выбор.


Бонусный вопрос:

Как я могу сделать это три Если заявления?Например, 2-й оператор 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 , если этот оператор истинен, выполните этот 3-й оператор SELECT:

$db = $stmt->("SELECT * FROM friends WHERE user_id = :user_id");
$db->bindParam(':user_id', $id);
$db->execute();

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете объединить / объединить

SELECT * FROM user_settings WHERE user_id = :user_id AND color = :color

и

SELECT * FROM friends WHERE user_id = :user_id

В один запрос с JOIN

SELECT 
 *
FROM 
 user_settings
INNER JOIN 
 friends 
ON 
 user_settings.user_id = friends.user_id 
AND
 user_settings.color = :color

или в другом формате JOIN

SELECT 
 *
FROM 
 user_settings
INNER JOIN 
 friends 
ON 
 user_settings.user_id = friends.user_id 
WHERE
 user_settings.color = :color

Или вы можете написать это как JOIN.(скорее всего медленнее)

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

Используемый метод, который лучше / быстрее, может / будет зависеть от того, какие индексы вы используете.

...