$data = mysql_query("SELECT *
FROM table1
where col1 LIKE '%$key%' or col2 LIKE '%$key%'
UNION
ALL
SELECT *
FROM table2
where col4 LIKE '%$key%' ") or die(mysql_error());
$anymatches=mysql_num_rows($data);
while($result = mysql_fetch_array($data));
{
if ($key == "") {
echo "пустой запрос";
}
elseif ($anymatches == 0)
{
echo "нет результатов";
}
else {
echo $result['col1'];
echo $result['col2'];
echo $result['col3']; }}
Проблема заключается в том, что два первых усл. опер. рабртают нормально. Но когда в таблицах находятся совпадения, скрипт не выводит ни какой инф.
Спустя 34 минуты, 9 секунд (11.02.2010 - 21:20) Soprano написал(а):
попробуй так:
если чё то не правильно, сорри, я тоже новичёёГГ))
$data = mysql_query("SELECT *
FROM table1
where col1 LIKE '%$key%' or col2 LIKE '%$key%'
UNION
ALL
SELECT *
FROM table2 where col4 LIKE '%$key%' ") or die(mysql_error());
$row = mysql_fetch_array($data);
do
{
echo $result['col1'];
echo $result['col2'];
echo $result['col3'];
}
while($row)</span>
если чё то не правильно, сорри, я тоже новичёёГГ))
Спустя 37 минут, 49 секунд (11.02.2010 - 21:58) sergeiss написал(а):
Soprano - нафига дерьмо советуешь (сорри за мой французский...)??? Цикл do-while в такой ситуации - это признак "поповщины", которую надо искоренять в себе!!! И уж тем более не советовать НИКОМУ!!!
Kinky - у тебя структура таблиц table1 и table2 одинаковая или есть различия? То есть, количество и типы полей, и порядок их следования должны быть абсолютно идентичны. Иначе ЮНИОН не сработает.
Kinky - у тебя структура таблиц table1 и table2 одинаковая или есть различия? То есть, количество и типы полей, и порядок их следования должны быть абсолютно идентичны. Иначе ЮНИОН не сработает.
Спустя 2 минуты, 52 секунды (11.02.2010 - 22:01) DedMorozzz написал(а):
почитай про джоины. Юнион для это как "часный случай". Если
Цитата |
структура таблиц table1 и table2 одинаковая |
тогда тока юнион.
Спустя 3 минуты, 21 секунда (11.02.2010 - 22:04) sergeiss написал(а):
Цитата (DedMorozzz @ 11.02.2010 - 23:01) |
почитай про джоины. Юнион для это как "часный случай". |
А ты ничего тут не смешал в кучу? Не сделал салат из разных понятий? ЮНИОН объединяет в одну таблицу (друг за другом) строки из разных таблиц с одинаковой структурой (или из двух разных выборок, что не суть важно), ДЖОЙН объединяет данные в одну таблицу - в одну строку! - данные из разных таблиц, с разной структурой.
Разницу видишь?
Спустя 27 минут, 26 секунд (11.02.2010 - 22:32) DedMorozzz написал(а):
хмхм. разве этот запрос не реализовать джоином? Возможно не разбираясь, на вскидку - запросто. Вообще без юниона
Спустя 13 минут, 39 секунд (11.02.2010 - 22:45) sergeiss написал(а):
Цитата (DedMorozzz @ 11.02.2010 - 23:32) |
разве этот запрос не реализовать джоином? Возможно не разбираясь, на вскидку - запросто. |
Ну напиши тогда, как ты это "запросто" сделаешь

Спустя 34 минуты, 26 секунд (11.02.2010 - 23:20) Gabriel написал(а):
ночьна дворе мож я туплю уже жестоко но тут никаких UNION'ов или * JOIN'ов ненужно.
SELECT * FROM table1 AS t1, table2 AS t2 where t1.col1 LIKE '%"$key%' or t1.col2 LIKE '%$key%' t2.col4 LIKE '%$key%'
Спустя 9 часов, 56 минут, 38 секунд (12.02.2010 - 09:16) sergeiss написал(а):
Gabriel, DedMorozzz!!!
Еще раз повторю: судя по первому вопросу (хотя хотелось бы услышать и ТС
), надо выбрать разные строки из разных таблиц. Вы же предлагаете выбрать в одну строку данные, да еще и связать их...
Это две разные процедуры! Для разных целей.
Еще раз повторю: судя по первому вопросу (хотя хотелось бы услышать и ТС

Это две разные процедуры! Для разных целей.
Спустя 2 часа, 32 минуты, 4 секунды (12.02.2010 - 11:48) Kinky написал(а):
Спасибо большое за советы!

Цитата |
у тебя структура таблиц table1 и table2 одинаковая или есть различия? То есть, количество и типы полей, и порядок их следования должны быть абсолютно идентичны. Иначе ЮНИОН не сработает. |
В двух таблицах одинаковое кол-во столбцов, значения везде VARHAR, названия столбцов разные (как я понял с одинаковыми не будет работать, так ведь). В остальном кажется идентичны, я плохо понимаю что там за индексы и праймери.

И ещё вопрос: названия колонок первой таблицы col1, col2, col3, второй col4, col5, col6. Поиск должен выдавать один или несколько результатов из таблиц.
Но необходимо чтобы col1 и col4, col2 и col5, col3 и col6 отображались в одном и том же месте на стр. Как следует использовать echo для этого? или есть другой способ?
Спустя 16 минут, 53 секунды (12.02.2010 - 12:05) sergeiss написал(а):
Цитата (Kinky @ 12.02.2010 - 12:48) |
значения везде VARHAR |
А длина одинаковая у одинаковых (по порядку) колонок разных таблиц?
Спустя 5 минут, 53 секунды (12.02.2010 - 12:11) Kinky написал(а):
да, одинаковая
Спустя 1 час, 6 минут, 52 секунды (12.02.2010 - 13:18) Kinky написал(а):
Цитата |
SELECT * FROM table1 AS t1, table2 AS t2 where t1.col1 LIKE '%"$key%' or t1.col2 LIKE '%$key%' or t2.col4 LIKE '%$key%' |
Это, кстати, даёт аналогичный результат, при попытке извлечь инфу с одной таблицы тоже самое.