SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.11.2007 02:29:30

mysql_query
Участник
Откуда: SOCHI 2014
Зарегистрирован: 11.11.2007
Сообщений: 3

SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

Подскажите можно ли в поле table_name указать несколько таблиц ну например family,name,name2  чтоб поле LIKE делал поиск по нескольким полям а не по одному как по умолчанию, пробовал ставить запятые не получилось....

Ещё вопрос, как подсчитать количество полей в базе,верне какой командой!!!

И ещё я делаю поиск в php MySQL как мне выдать количество найденного ну типа- По вашему запросу "Компьютеры" найдено 4 совпадения...

ДА и ещё, есть ли в MySQL функции которые выводят данные за определённый промежуток времени, ну например за 1 день за неделю и за месяц, ну типа выборки данных по времени???

Неактивен

 

#2 11.11.2007 03:13:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

1. Несколько LIKE:

Код:

SELECT ...
FROM table
WHERE name LIKE 'Петр%' AND surname LIKE 'Сидорович%' AND familyname LIKE 'Иванов%';

2. Количество строк в таблице:

Код:

SELECT COUNT(*) FROM table;

3. Количество строк, которое подпадает под выборку (вне зависимости от LIMIT)

Код:

SELECT SQL_CALC_FOUND_ROWS ...

4. За месяц

Код:

SELECT ... WHERE ts > NOW() - INTERVAL 1 MONTH

Неактивен

 

#3 11.11.2007 03:36:47

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

Подскажите можно ли в поле table_name указать несколько таблиц ну например family,name,name2  чтоб поле LIKE делал поиск по нескольким полям а не по одному как по умолчанию, пробовал ставить запятые не получилось....

Чтобы делать осмысленную выборку из нескольких таблиц, нужно указать, по какому полю эти таблицы будут связаны.
Это можно сделать в условии WHERE (например, вида WHERE family.col_1 = name = col_2).

Более общий случай - использование оператора JOIN.
Подробнее здесь:
http://dev.mysql.com/doc/refman/5.0/en/join.html


Если нужно проверять условие LIKE для нескольких полей, то это можно записать соотв. логическими операциями:

SELECT ...
WHERE col_1 LIKE 'что-то' OR col_2 LIKE 'что-то' OR col_3 LIKE 'что-то'

Вместо OR можно использовать AND.

Ещё вопрос, как подсчитать количество полей в базе,верне какой командой!!!

А зачем Вам нужно количество полей в базе? Поля - это объект таблицы, а не базы. Может быть, Вам нужен перечень полей из определенных таблиц?

Если все-таки нужно именно количество полей в базе, и Вы используете MySQL 5, то это можно сделать при помощи такого запроса:

SELECT COUNT(*) FROM information_schema.`COLUMNS` C
WHERE C.`TABLE_SCHEMA` = 'имя_базы_данных';

Если более старая версия MySQL, то в один запрос это не получится.

И ещё я делаю поиск в php MySQL как мне выдать количество найденного ну типа- По вашему запросу "Компьютеры" найдено 4 совпадения...

Абстрактно сказать сложно. Покажите запрос, который используете для поиска.

ДА и ещё, есть ли в MySQL функции которые выводят данные за определённый промежуток времени, ну например за 1 день за неделю и за месяц, ну типа выборки данных по времени???

Такое возможно, если у Вас есть колонка временного типа данных (т.е. DATE, DATETIME или TIMESTAMP).
Напирмер, записи, соответствующие недельному интервалу, начинающемуся от 1 ноября 2007, могут быть выбраны примерно вот таким запросом:

SELECT ...
WHERE имя_колонки_с_датой BETWEEN '2007-11-01' AND ADDDATE('2007-11-01',  INTERVAL 7 DAYS);

Чтобы получить текущее время, используйте функцию NOW();

Неактивен

 

#4 11.11.2007 03:37:46

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 845

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

2paulus: опередил smile

Неактивен

 

#5 11.11.2007 13:19:29

mysql_query
Участник
Откуда: SOCHI 2014
Зарегистрирован: 11.11.2007
Сообщений: 3

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

Вот спасибо, буду пробовать.
P.S. Спасибо за ответ у вас самый нормальный форум, в других спрашивал не смогли ответить даже...

Неактивен

 

#6 11.11.2007 13:47:54

mysql_query
Участник
Откуда: SOCHI 2014
Зарегистрирован: 11.11.2007
Сообщений: 3

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

Вообщем расписываю всю траблу что я хочу сделать, я php MySQL Знаю 2 недели, и вот почитав собрался сделать статистику для сайта,
ну типа по браузерам по ip адресам по операционным системам, вот база как выглядит http://foto.mail.ru/mail/sochi87/123/i-3.jpg
Все нормально все в базу заносится, а вот вывести по дням по месяцу не могу, и подсчитать количество операционок ил браузеров ну типа  Всего - Opera 14||| Internet Explorer-15 и тд, попробовал сделать оператором LIKE,ну типа передаю через форму дату и он мне выдает все совпадения,но это тупо как то sad  да и подсчетом кол-ва ос и браузеров тоже не смог!!!

HELP!!!! ME!!!

Неактивен

 

#7 11.11.2007 13:57:57

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: SELECT * FROM db_name WHERE table_name LIKE '%Ф.И.О%'

Картинка с базой у Вас не закачалась. Попробуйте использовать GROUP BY, Например

SELECT browser_name,count(*) FROM stat GROUP BY browser_name;

Правда здесь он разные версии браузеров будет выводить отдельно, дальше все зависит от того, что считать одним браузером.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson