Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Поисковики мне не помогли. Надеюсь на вашу помощь.
Задача такова. Есть таблица
CREATE TABLE IF NOT EXISTS `objects`
+---+------------+----------+----------+-------+----------+
| id | description | add_date | exp_date | enable | url_name |
+---+------------+----------+----------+-------+----------+
| 1 | desc1 | 08.12.12 | 12.08.14 | Y | url1 |
+---+------------+----------+----------+-------+----------+
| 2 | desc2 | 12.11.12 | 28.12.13 | Y | url2 |
+---+------------+----------+----------+-------+----------+
| 3 | desc3 | 06.12.12 | 31.11.15 | N | url3 |
+---+------------+----------+----------+-------+----------+
| 4 | desc4 | 12.08.12 | 11.12.13 | Y | url4 |
+---+------------+----------+----------+-------+----------+
| 5 | desc5 | 10.06.12 | 12.23.16 | N | url5 |
+---+------------+----------+----------+-------+----------+
| 6 | desc6 | 09.11.12 | 12.12.14 | Y | url6 |
+---+------------+----------+----------+-------+----------+
Мне нужно выбрать строки `description`="desc8", `description`="desc2", `description`="desc5", `url_name`="url6", `url_name`="url1"
Но так чтобы выбралось то что существует, если допустим `description`="desc8" - НЕ СУЩЕСТВУЕТ возвращалась не ошибка, а данные с учетом других СУЩЕСТВУЮЩИХ значений.
Отредактированно Отто Нурманис (07.04.2012 13:55:05)
Неактивен
Что значит "выделить"? Речь идёт про выбрать?
SELECT * FROM `objects` WHERE `description`IN ('desc8', 'desc2', 'desc5') OR `url_name` IN ('url6', 'url1'); - оно?
Неактивен
select * from `objects` where `description`="desc8" or `description`="desc2" or ...
Неактивен
deadka написал:
Что значит "выделить"? Речь идёт про выбрать?
SELECT * FROM `objects` WHERE `description`IN ('desc8', 'desc2', 'desc5') OR `url_name` IN ('url6', 'url1'); - оно?
Да. выделить значит - SELECT. Прошу прощения
Спасибо, это похоже на "это"! Но меня смущает OR, то есть если он найдет совпадения по DESCRIPTION то URL_NAME он уже не будет учитывать?? А если поставить AND то должно все совпасть с точностью, а если не совпадет вернет "пустоту" Так же??
Мне нужно выбрать все строки удовлетворяющие запросу, но если по данному значению в базе нет строки, то выдать то что есть по другим значениям.
Отредактированно Отто Нурманис (07.04.2012 13:51:21)
Неактивен
Отто Нурманис написал:
Спасибо, это похоже на "это"! Но меня смущает OR, то есть если он найдет совпадения по DESCRIPTION то URL_NAME он уже не будет учитывать?? А если поставить AND то должно все совпасть с точностью, а если не совпадет вернет "пустоту" Так же??
А Вы проверьте . Отвечать на вопрос, привязанный к конкретным числам и значениям куда проще, чем на абстрактный .
Касательно самого запроса - если Вам нужно, чтобы в строке было "попадание" и в url и в description, то попробуйте
SELECT * FROM `objects` WHERE `description`IN ('desc8', 'desc2', 'desc5') AND `url_name` IN ('url6', 'url1');
Если опять не то, то приведите ту выборку, которую Вы хотите получить из данных Вашей таблицы.
Неактивен
Отто Нурманис написал:
Спасибо, это похоже на "это"! Но меня смущает OR, то есть если он найдет совпадения по DESCRIPTION то URL_NAME он уже не будет учитывать??
Смотря что вы подразумеваете под учитывать. Если бы вам было нужно, чтобы строка соответствовала `url_name`="url1" и при этом должно быть `description`="desc1", то да не будет учитывать и вернет строку при соответствии одному из значений.
А в вашей постановке задачи or работает правильно.
Неактивен
Опять опоздал
Неактивен
deadka и vasya спасибо Вам большое!
РАБОТАЕТ:
Неактивен
Второй естественно не работает, так как в таблице нет строк с значениями ('desc8','url6'), ('desc8','url1') и так далее.
Неактивен
Уважаемые можно я вас еще помучаю??? Извините, у меня очень мало времени и с MySQL это будет единственная задача все остальное это моя сфера (Ajax, CSS, HTML Немножко PHP), поэтому сильно на изучение MySQL не хочу сейчас отвлекаться.
Прошу помочь если можно. Сейчас я дам ооочень длинный запрос в БД. От него СУБД MySQL в шоке. и вместо 20-30 записей почему-то выдает 4236 страниц по 30 записей на странице, даже не хочу считать сколько это. НО ПРИ ЭТОМ вообщем записей в базе не больше 100 шт.
Отредактированно Отто Нурманис (07.04.2012 15:21:41)
Неактивен
Скорее из-за неправильных or
Сформулируйте словами какие записи по каким условиям должны быть выбраны.
Неактивен
Есть 4 таблицы:
Неактивен
Извините за беспокойство. Сам себя заставил подумать когда начал излагать здесь свою "проблему" нашел решение вопроса вроде бы. вот эту часть взять в скобки (`id`IN (1, 2, 3) OR `url_name` IN ('url6', 'url1')) по крайней мере уже не миллион записей. буду тестить уже дальше
Неактивен
Страниц: 1