Получать данные из нескольких таблиц MySQL - PullRequest
0 голосов
/ 13 апреля 2010

Мои две таблицы выглядят так:

       TABLE1                      TABLE2
+--------------------+      +--------------------+
|field1|field2|field3|  and |field2|field4|field5|
+--------------------+      +--------------------+

Я уже выполняю запрос SELECT для TABLE1 и сортирую все данные в переменные:

$query = "SELECT * FROM TABLE1 WHERE field2 = 2";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);    
  if((!is_bool($result) || $result) && $num_rows) {
   while($row = mysql_fetch_array($result))
    {
   $field1 = $row['field1'];
   $field2 = $row['field2'];
   $field3 = $row['field3'];
    }
  }

Что я хочу сделать, так это получить данные из 'field4' в TABLE2 и добавить их в мои переменные. Я хотел бы получить field4 ГДЕ field2 = 2

Ответы [ 4 ]

3 голосов
/ 13 апреля 2010
SELECT
  t1.*,
  t2.field4
FROM
  TABLE1 AS t1,
  TABLE2 AS t2
WHERE 
    t1.field2 = 2
  AND
    t1.field2 = t2.field2

Вы хотите объединить две таблицы, что можно сделать явно (с помощью оператора JOIN или одного из его вариантов) неявно (используя SELECT непосредственно из нескольких таблиц).

Из вашего описания я предполагаю, что вы хотите выполнить объединение, где field2 в двух таблицах имеют одинаковое значение (2).


Если TABLE2 не всегда предоставит допустимого кандидата на присоединение, но вы все еще хотите получить данные из TABLE1, вы должны использовать LEFT JOIN (давая NULL для field4, где ничего соответствует):

SELECT
  t1.*,
  t2.field4
FROM
    TABLE1 AS t1
  LEFT JOIN
    TABLE2 AS t2
  ON
    t1.field2 = t2.field2
WHERE 
  t1.field2 = 2
1 голос
/ 13 апреля 2010

Вам необходимо использовать JOIN:

SELECT TABLE1.*,TABLE2.field4 FROM TABLE1 JOIN TABLE2 ON TABLE1.field2=TABLE2.field2 WHERE TABLE1.field2=2;
1 голос
/ 13 апреля 2010
0 голосов
/ 13 апреля 2010

привет, попробуйте следующее как ваш запрос.

Не всегда желательно использовать * в запросе выбора

SELECT T1.field1,T1.field2,T1.field3, T2.field4 FROM TABLE1 AS T1 INNER JOIN TABLE2 AS T2 ON T1.field2=T2.field2 WHERE field2 = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...