[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу получить данные с БД
Kinky
Привет, всем! Надеюсь мне кто-нибудь сможет помочь. Вот мой скрипт:


$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 одинаковая или есть различия? То есть, количество и типы полей, и порядок их следования должны быть абсолютно идентичны. Иначе ЮНИОН не сработает.

Спустя 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)
разве этот запрос не реализовать джоином? Возможно не разбираясь, на вскидку - запросто.

Ну напиши тогда, как ты это "запросто" сделаешь smile.gif

Спустя 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!!!

Еще раз повторю: судя по первому вопросу (хотя хотелось бы услышать и ТС smile.gif), надо выбрать разные строки из разных таблиц. Вы же предлагаете выбрать в одну строку данные, да еще и связать их...
Это две разные процедуры! Для разных целей.

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

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


В двух таблицах одинаковое кол-во столбцов, значения везде VARHAR, названия столбцов разные (как я понял с одинаковыми не будет работать, так ведь). В остальном кажется идентичны, я плохо понимаю что там за индексы и праймери. unsure.gif

И ещё вопрос: названия колонок первой таблицы 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%'


Это, кстати, даёт аналогичный результат, при попытке извлечь инфу с одной таблицы тоже самое.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.