1 (изменено: evgenmi, 2006-06-22 15:25:05)

Тема: Запутался с фильтрацией

Есть база с перечнем товаров. База состоит из
ID,namenovanie, cena,tip,p_tip
В p_tip много типов , соответственно в namenovanie перечень товаров.
Делаю так
$query="select * from `test` where (`p_tip`='%ATX_%' or `naimenovanie` like '%inwin%' )order by `id`";
$result = mysql_query($query) or die("ошибка");
И всебы ничего , но в наименованиях в других p_tipe встречается слово Microtech неподскажете как мне выбирать только нужные строки.
Таблица выглядит так :
тnaimenovanie| p_tip |
-----------------------------
Microtech | case |
Microtech | case |
Microtech | kolonki |
Как сделать так чтобы при фильтрации отбирались только из p_tip case , kolonki игнорировались

2

Re: Запутался с фильтрацией

$query="select * from `test` where (`p_tip`='%ATX_%' or `naimenovanie` like '%inwin%' )order by `id`";

$query="select * from `test` where (`p_tip` like '%ATX_%' and `naimenovanie` like '%inwin%' )order by `id`";

что ты имеешь в виду под игнорировались? Игнорировались при выборке или при отображении результатов.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

3

Re: Запутался с фильтрацией

Чтобы отбирались только  те поля которые относятся к case а те которые к kolonki неотображались

4

Re: Запутался с фильтрацией

evgenmi
Попробуй так:
$query="SELECT * FROM `test` WHERE `p_tip` LIKE '%ATX_%' AND `naimenovanie` LIKE '%inwin%' AND `p_tip` NOT LIKE '%kolonki%' ORDER BY `id`";

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

5

Re: Запутался с фильтрацией

Я конечно извиняюсь видимо неправильный я пример привел вот тут пример моей таблицы как она есть
http://www.evgen.blend.ru/case/case.php
Там есть всякие наимнования ну например Microlab  в 'tip'=case но также это название встречается в 'tip'=sound . Мне нужно сделать  раздел (Корпуса) и чтобы там отображались корпуса и будет раздел (Колонки) там соответственно должны отображаться колонки. Я писал так
$query="select * from `test` where `tip` like 'case' OR `naimenovanie` like '%microlab%' order by `id`";
И все ничего но вот тока все что встречается в названии Microlab попадает в результат , что как мне кажется справедливым при использовании OR. Как только я начинаю использовать AND то ощущение такое будто записей в таблице нет вообще тоесть ничего невыводится.

6

Re: Запутался с фильтрацией

evgenmi
если ты используешь

$query="select * from `test` where `tip` like 'case' OR `naimenovanie` like '%microlab%' order by `id`";

то тебе выводятся все записи, где в поле tip встречаются символы case, а также те записи где в поле naimenovanie встречаются символы microlab. Т.е. юудут выводиться все корпуса case и вся продукция microlab, что тебя не устривает. А вот использование AND сужает выборку до всех записей корпусов (case) марки (microlab):
$query="select * from `test` where `tip` like 'case' AND `naimenovanie` like '%microlab%' order by `id`";
это будет столбец "Корпуса"
$query="select * from `test` where `tip` like 'sound' AND `naimenovanie` like '%microlab%' order by `id`";
это будет столбец "Колонки". Т.е. твоя задача решается 2 запросами

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

7

Re: Запутался с фильтрацией

В томто и дело что когда появляется AND  то результат нулевой тоесть все выглядит как будто в таблице нет ни того не другого или вообще таблица пуста.

8

Re: Запутался с фильтрацией

evgenmi
В запросах при задании условия соблюдай регистр:
$query="select * from `test` where `tip` like 'Case' AND `naimenovanie` like '% MicroLab%' order by `id`";

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

9

Re: Запутался с фильтрацией

Вроде заработало , но я неуверен вот сторка которую я закачивал в MySql
INSERT INTO test VALUES('  ','  InWin BT-553 240W Desktop mATX White Slim, U2, A, F корпус    ' , '    55.00 долл.  ',  '   Case   ','  ATX  ' ,'  41002879  ');                       
После того как убрал пробелы стало так
INSERT INTO test VALUES('','InWin BT-553 240W Desktop mATX White Slim, U2, A, F корпус','55.00 долл.','Case','ATX','41002879');

Потом попробывал запрос
$query="select * from `test` where `tip`='1' and naimenovanie like '%P4%' order by `id`";
Моглоли быть дело в пробелах???

10

Re: Запутался с фильтрацией

Потом попробывал запрос
$query="select * from `test` where `tip`='1' and naimenovanie like '%P4%' order by `id`";
Моглоли быть дело в пробелах???

И что у тебя получилось? в результате? Не заставляй угадывать.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

11

Re: Запутался с фильтрацией

Получилось что AND  вроде как заработало. Но чтобы точно проверить теперь прдется немного поправить 1С дело в том , в таком виде у меня текстовый файл формирует 1С. О результатах доложу , думаю если дело было в это то народ небудет наступать на эти грабли )))))

12

Re: Запутался с фильтрацией

Мда дело было действительно в пробелах )))))))

13

Re: Запутался с фильтрацией

Еще одно там не пробелы а табуляция была ))))

14

Re: Запутался с фильтрацией

evgenmi
Да, все это имеет значение в SQL запросах.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

15

Re: Запутался с фильтрацией

Lokki  огромное спасибо за помощь и терпение )))))

16

Re: Запутался с фильтрацией

evgenmi
Пожалуйста, всегда рад помочь. wink

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)