2015-05-20 2 views
1

У меня есть небольшая проблема, которую я не могу понять.Доступ к двум различным таблицам для одного цикла

Мне нужно вытащить данные из двух разных таблиц в одном цикле. Я никогда не делал этого раньше, поэтому я понятия не имею, как это сделать. Я попробовал два разных запроса. Это выглядело так:

$query = "SELECT * FROM colors "; 
$color_select = mysqli_query($connection, $query); 

$second_query = "SELECT * FROM votes"; 
$vote_select = mysqli_query($connection, $second_query); 

А затем поместить их в петлю:

while($row = mysqli_fetch_assoc($color_select) && $second_row = mysqli_fetch_assoc($vote_select)) 
{ 
$color = $row['Colors']; 
$votes = $second_row['Votes']; 
echo "<tr><td>$color</td><td>$votes</td></tr>"; 
} 

Но это не сработало. Я этого не ожидал, просто хотел попробовать. :) Может быть, кто-то может помочь мне. Благодарю.

В конце дня мне нужна таблица с двумя столбцами, одна из которых содержит имя цвета из одной таблицы БД, а другая содержит несколько голосов.

В соответствии с запросом: табличные конструкции.

Таблица: цвета имеют только одно поле Цвета.

Таблица: голос имеет четыре поля CITY_ID, Город, цвета и Голосов

********************* **** EDIT ************************************** Так что исправил запрос как предположил, но пока ничего не показывает.

Вот отредактированный код:

$query = "SELECT * FROM colors,votes WHERE colors.Colors=votes.Colors"; 
$color_votes_select = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($color_votes_select)) 
{ $color = $row['Colors']; 
    $votes = $row['Votes']; } 
+0

Как эти 2 таблицы связаны? –

+1

, если 'color' table имеет отношение к' vote' use join –

+0

@AbhikChakraborty Они находятся в одной базе данных – TacoCat

ответ

1

если таблица имеющий отношение.

попробуйте это в одном запросе.

SELECT 
    `colors`.*,votes.* 
FROM 
    `colors` 
INNER JOIN 
    `votes` ON 
    `votes`.colorId = `colors`.Id 
+0

отношение 1-2-1 или 1-2 м ??? –

+0

Хорошо, но как меняется цикл while в этом случае? – TacoCat

+0

Ваш результат будет получен в одном запросе –

0

Наиболее имп ***** Вы должны иметь какое-то отношение между таблицами

В противном случае отзыв Временное решение

  1. Выполнить запрос по цвету, сохранить его в Arraya
  2. Выполнить запрос на голосование, Сохраните его в ArrayB
  3. Создать новый массив ArrayC

    $ arrayC = array(); Loop array A или C, если они оба контактируют с одним и тем же числом строк array_push ($ ArrayC, ключ и значение цвета, ключа и значения голосов);

  4. Final ArrayC петля для печати тр и тд
0

Первый соотносить эти две таблицы, писать color_id в таблице голосов.

$query = "SELECT * FROM colors,votes where colors.id=votes.color_id"; 

$color_select = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($color_select)) 

{

$color = $row['Colors']; 
$votes = $row['Votes']; 

}

0

Попробуйте это:

$query = "SELECT colors FROM colors"; 
$color_select = mysqli_query($connection, $query) or die (mysqli_error()); 

$second_query = "SELECT votes FROM votes"; //you only need column votes right? 
$vote_select = mysqli_query($connection, $second_query) or die (mysqli_error());; 

while($row = mysqli_fetch_assoc($color_select) && $second_row = mysqli_fetch_assoc($vote_select)){ 

    $color[] = $row['colors']; 
$votes[] = $second_row['votes']; 
echo "<tr><td>$color</td><td>$votes</td></tr>"; 
} 

Краткое объяснение: Он будет получать выбор и хранить в массив (потому что вы делали выбирает несколько строк в одну единственную переменную), а затем просто отображается с эхом ,

+0

Я не пытаюсь сохранить значения в переменных. Если бы это было так, ваш пример помог бы. Мне просто нужно их повторить. :) – TacoCat

+0

Вы пробовали? Потому что лучше использовать их для последующего использования (эхо в этом случае). Разве это не работает? Btw, он должен отображать все цвета и голоса каждого столбца независимо от того, связаны они или нет. Это может быть изменение с запросом tho. – Nighthunter22

Смежные вопросы