Mysql-запрос с левым соединением - специализировать индекс, если две строки совпадают

0

У меня есть таблица, называемая users а другая - grouppost в моей базе данных mysql. Обе таблицы имеют общую строку id. Поэтому, когда я делаю sql-запрос слева, соединяющего две таблицы, как я могу решить, какую строку id я хочу?

пример

$sql = "SELECT gp.*, u.*
      FROM grouppost
      AS gp LEFT JOIN users AS u ON u.username = gp.author
      WHERE gp.gname = ? AND gp.type = ? ORDER BY gp.pdate DESC $limit";
      $stmt = $conn->prepare($sql);
      $stmt->bind_param("ss",$g,$zero);
      $stmt->execute();
      $result_new = $stmt->get_result();
      if ($result_new->num_rows > 0){
         while ($row = $result_new->fetch_assoc()) {
            $grouppost_id = $row["id"]; // I want to get the id from table grouppost but I get the id from the users table
         }
      }
Теги:
sql-server
left-join

1 ответ

1
Лучший ответ

Если вы хотите настроить таргетинг по отдельности в результирующем наборе, вы можете использовать его в своем выборе:

SELECT gp.*, u.*, gp.id AS grouppost_id 
FROM grouppost AS gp 
LEFT JOIN users AS u ON u.username = gp.author
WHERE gp.gname = ? 
  AND gp.type = ? 
ORDER BY gp.pdate DESC
$limit
  • 0
    Но когда я запускаю запрос, он возвращает то же самое ( id в таблице users ). С sql все в порядке, проблема будет в том, как сохранить данные в цикле while. Мне нужно специализировать индекс row .
  • 0
    Вот почему я добавил gp.id AS grouppost_id в запрос. Если вам нужен grouppost_id, он теперь имеет другое имя, поэтому он не конфликтует с другим значением.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню