SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.03.2013 00:13:07

numen
Участник
Зарегистрирован: 05.03.2013
Сообщений: 4

Запрос из двух таблиц

Доброго времени суток!

Подскажите, пожалуйста, как сделать запрос по двум таблицам:

rebus
| id |   rebus              |
-----------------------
|  1 |  автолавка        |
|  2 |  маршрутка       |
|  3 |  дом на колесах |


work_car
| id | work_id | car_id |
-----------------------
| 1  |  1        |  2       |
| 1  |  2        |  2       |
| 1  |  1        |  1       |
| 1  |  3        |  3       |
| 1  |  1        |  4       |

Имеем также переменную car_id ($id = 2), которая имеет 2 записи в таблице work_car

Надо на выходе получить полный список таблицы rebus с отмеченными чекбоксами (1):

1  автолавка
1  маршрутка
0  дом на колесах

Заранее огромное спасибо за подсказку!


Такой запрос выдает только одно значение из таблицы, а надо несколько:

$result2 = mysql_query("SELECT * FROM rebus ORDER BY rebus",$db);
$myrow2 = mysql_fetch_array($result2);

$result3 = mysql_query("SELECT * FROM work_car WHERE car_id=$id",$db);
$myrow3 = mysql_fetch_array($result3);

 do
{    
    if ($myrow3["work_id"] == $myrow2["id"])
{
printf ("<label><input type='checkbox' name='work_car[]' value='%s' checked> %s</label><br>",$myrow2["id"],$myrow2["rebus"]);
}
else
{
printf ("<label><input type='checkbox' name='work_car[]' value='%s'> %s</label><br>",$myrow2["id"],$myrow2["rebus"]);    
}
}
while ($myrow2 = mysql_fetch_array($result2))

Отредактированно numen (06.03.2013 00:17:41)

Неактивен

 

#2 06.03.2013 00:44:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Запрос из двух таблиц

Доброго времени суток и Вам.

Давайте отделим mysql от php.

create table t_5875_rebus(id int, rebus varchar(255)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
create table t_5875_work_car(work_id int, car_id int);
insert into t_5875_rebus(id, rebus) values(1,'автолавка'),(2,'маршрутка'),(3,'дом на колёсах');
insert into t_5875_work_car(work_id, car_id) values(1,2),(2,2),(1,1),(3,3),(1,4);


Код:

mysql> select r.rebus, work_id IS NOT NULL as checked FROM t_5875_rebus r LEFT JOIN t_5875_work_car wc ON r.id = wc.work_id AND wc.car_id=2;
+----------------------------+---------+
| rebus                      | checked |
+----------------------------+---------+
| автолавка         |       1 |
| маршрутка         |       1 |
| дом на колёсах |       0 |
+----------------------------+---------+

Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 06.03.2013 01:33:36

numen
Участник
Зарегистрирован: 05.03.2013
Сообщений: 4

Re: Запрос из двух таблиц

Спасибо большое за ответ, завтра (вернее уже сегодня) днем попробую так сделать...

Неактивен

 

#4 06.03.2013 13:14:52

numen
Участник
Зарегистрирован: 05.03.2013
Сообщений: 4

Re: Запрос из двух таблиц

deadka, ура все работает! Огромное спасибо за помощь! Сам 2 дня безрезультатно провозился с этим запросом... Вам бы какую-то кнопку сделать "отблагодарить" - я бы точно за такую помощь заплатил...

Неактивен

 

#5 06.03.2013 13:54:44

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Запрос из двух таблиц

Обращайтесь smile.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 06.03.2013 18:28:34

numen
Участник
Зарегистрирован: 05.03.2013
Сообщений: 4

Re: Запрос из двух таблиц

Обязательно! Добавил ваш сайт в избранное...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson