Один запрос к нескольким таблицам?

Special_Jacky

Новичок
Здравствуйте, как сделать один запрос к нескольким таблицам?

Таблиц у меня 5 хочу чтоб одним запросом я выбрал все данные из них в один массив.

Мой запрос обращается только к одной таблице:
mysql_query("SELECT * FROM tbl1 WHERE title='$search'")
Запрос в виде: mysql_query("SELECT * FROM tbl1, tbl2, tbl,3, tbl4, tbl5 WHERE title='$search'") - не работает.

Как решить этот вопрос?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Подробнее, почему ты хочешь 1 запрос, вместо 5?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Если кажется, то так делать не стоит. Делать все надо осмысленно, когда ты уверен, что так лучше будет. А мерить размер кода - вообще глупая затея.

Ну и самое главное, ты вообще о структуре таблиц и о том, что ты хочешь выбрать не обмолвился...
 

Special_Jacky

Новичок
Если кажется, то так делать не стоит. Делать все надо осмысленно, когда ты уверен, что так лучше будет. А мерить размер кода - вообще глупая затея.

Ну и самое главное, ты вообще о структуре таблиц и о том, что ты хочешь выбрать не обмолвился...
В общем делать 5 запросов? возможности одного запроса нет?
 

Redjik

Джедай-мастер
Давай ты опишешь задачу, а мы уже направим тебя =)
У меня как минимум 3 варианта чего ты хочешь сделать, и все они реализуются по разному.
 

Special_Jacky

Новичок
Давай ты опишешь задачу, а мы уже направим тебя =)
У меня как минимум 3 варианта чего ты хочешь сделать, и все они реализуются по разному.
Самый простой поиск, есть пять таблиц, есть форма поиска, нажимаем go, в обработчике прописываем функции для $search, но вот это значение которое присвоено этой переменной мы должны искать в 5 таблицах, как сделать один запрос и найти в этих пяти таблицах поле title где оно будет соответствовать $search?

Можно прописать 5 запросов типа:
$result1 = mysql_query("SELECT * FROM konfeti WHERE title='$search'") or die('Query filed');
$myrow1 = mysql_fetch_array($result1);

$result2 = mysql_query("SELECT * FROM torti WHERE title='$search'") or die('Query filed');
$myrow2 = mysql_fetch_array($result2);

$result3 = mysql_query("SELECT * FROM vostok WHERE title='$search'") or die('Query filed');
$myrow3 = mysql_fetch_array($result3);

$result4 = mysql_query("SELECT * FROM marmelad WHERE title='$search'") or die('Query filed');
$myrow4 = mysql_fetch_array($result4);

$result5 = mysql_query("SELECT * FROM piroj WHERE title='$search'") or die('Query filed');
$myrow5 = mysql_fetch_array($result5);

Но я думаю это полный бред.....
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А хранить это обязательно в разных таблицах? Проще если поле не очень много сделать одну таблице и по ней искать.

PS: кстати у тебя запрос содержит SQL иньекцию.
 

Special_Jacky

Новичок
А хранить это обязательно в разных таблицах? Проще если поле не очень много сделать одну таблице и по ней искать.

PS: кстати у тебя запрос содержит SQL иньекцию.
нет тут нужно именно 5 разных таблиц с товарами определенного класса.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
И что мешает сделать одну таблицу, проставив в одной ее колонке идентификатор типа товара?
 

Special_Jacky

Новичок
И что мешает сделать одну таблицу, проставив в одной ее колонке идентификатор типа товара?
Уже весь сайт сделан остался поиск, не очень хочеться все переделывать... как правильно написать запрос чтоб не было иньекций?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
http://phpfaq.ru/mysql

Таблицы у тебя однородные? Структуру покажи

Можно по идее попробовать сделать UNION нескольких подзапросов.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Тогда запрос, который ты привел в своем первом посте должен работать, просто у тебя там есть опечатка.
 

Special_Jacky

Новичок
Тогда запрос, который ты привел в своем первом посте должен работать, просто у тебя там есть опечатка.
в чем ошибка? и еще вопрос на счет Иньекций, в чем мой запрос плох?
В общем огромное спасибо за советы, я решил сделать по вашему совету одну таблицу отдельно с категориями на разные группы товаров, админ блок уменьшился, меня это радует стало все намного удобнее.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Special_Jacky
Тебе mysql даже сворей всего пишет в каком месте запроса ошибка. Посмотри внимательно.

На счет иньекций, ты мою ссылку читал вообще? Там про это написано.
 
Сверху