Сортировка mysql по нескольким условиям

F
На сайте с 10.05.2009
Offline
91
2140

Допустим у меня есть таблица с именем tablename, в базе dbname

как можно вывести результаты отсортированые по нескольким критериям? Нужно получить строки где countryid больше 2, и typid больше 1. Можно ли этот запрос записать в один mysql_query? Вот мой код, но он не работает. Что в нем неверно?


<?
mysql_connect("localhost","root","") or die (mysql_error());

mysql_select_db ("dbname") or die (mysql_error());

mysql_query ("SET NAMES cp1251");
mysql_query ("SELECT * FROM `tablename` where `countryid` = '2'");
mysql_query ("SELECT * FROM `tablename` where `typid` > '1'");

$d = mysql_query("SELECT * FROM `tablename`");

while($info = mysql_fetch_array( $d))
{
echo $info['info'].' '. $info['countryid'].' '.$info['typid'].' '.$info['oblastid']."<br>";

}
?>
unixadm
На сайте с 24.09.2010
Offline
110
#1

mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1'");

Host4Biz: NVMe Хостинг в Европе ( https://host4.biz/ru/hosting/shared-hosting ) | Windows/Linux NVMe VPS в Европе ( https://host4.biz/ru/vps ) | Выделенные серверы в Европе, США и Азии ( https://host4.biz/ru/servers/dedicated )
ParserYa
На сайте с 04.10.2010
Offline
29
#2

mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1'");

unixadm :)

F
На сайте с 10.05.2009
Offline
91
#3

если еще включить поиск по полю info, тогда запись так ведь должна выглядеть? (не работает у меня такой запрос выборки)

mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1' AND `info` = 'Тут текст'");

V
На сайте с 07.03.2007
Offline
84
#4

может вы случайно для поля typid указали не числовой тип в базе?

F
На сайте с 10.05.2009
Offline
91
#5

Vladimik, там стоит числовой.

mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1'");

этот вариант работает, но теперь нужно еще включить к условию выборки поле info.

mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1' AND `info` = 'Тут текст'");

проблема начинается когда добавляю AND `info` = 'Тут текст'

ParserYa
На сайте с 04.10.2010
Offline
29
#6
Filchakov:
mysql_query ("SELECT * FROM `tablename` where `countryid` = '2' AND `typid` > '1' AND `info` = 'Тут текст'");

А какого рода проблемы то появляются? Что пишет вообще?

Просто я только что провел такой запрос на своей БД и все было правильно..

Смотрите внимательно, правильный ли тип выставлен. Обратите внимание на кодировку: в первом сообщении вы делаете

Filchakov:
mysql_query ("SET NAMES cp1251");

Убедитесь, что ПХП файл из которого делается запрос в той же кодировке. Убедитесь что Сравнение(Collate) у поля info выставлен cp1251_general_ci и вся БД в этой же кодировке.

vinnipuh
На сайте с 25.11.2010
Offline
4
#7

Проблема в кодировке, я думаю.

Всегда постараюсь помочь советом :-) А ещё Вы можете заказать у меня разработку PHP-скриптов (/ru/forum/572825) :-)
F
На сайте с 10.05.2009
Offline
91
#8
vinnipuh:
Проблема в кодировке, я думаю.

если выборку делаю только по

mysql_query ("SELECT * FROM `tablename` where `info` = 'Тут текст'");

все работает, значит с кодировкой все впорядке

Filchakov добавил 26.11.2010 в 02:26

Заработало... по какой причине до этого не работало, не знаю. скорее всего проблема с кодировкой самого пхп файла

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий