С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546

Как правильно строить запрос

05.08.2010, 22:57. Показов 1444. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Стал строить запрос в БД. Переставлял местами, переставлял... Чет допереть не могу...
PHP
1
$object=mysql_query("SELECT objects.* FROM objects, slots WHERE objects.user='".$stat['user']."' AND slots.id=".$stat['id']."  AND objects.komis=0 AND objects.sclad=0 AND objects.id NOT IN (slots.1,slots.2,slots.3,slots.4,slots.5,slots.6,slots.7,slots.8,slots.9,slots.10,slots.11,slots.12,slots.13,slots.14,slots.15,slots.16,slots.17,slots.18,slots.19,slots.20,slots.21,slots.22) AND objects.bank=0 AND objects.bank=2 ORDER BY time DESC");
Ключевое тут последнее
PHP
1
AND objects.bank=0 AND objects.bank=2
Если ставлю вместо AND OR то выдает то что нужно но по несколько раз. Если оставляю как есть то вообще не показывает...
Как правильно построить подскажите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2010, 22:57
Ответы с готовыми решениями:

Как в sql запрос вставить еще один запрос правильно?
Есть длинный запрос, в котором можете даже не разбираться если не хотите, но выдает он следующее: Запрос: SELECT...

Запрос INSERT INTO как построить запрос правильно?
Народ помогите пожалуйста сделать запрос правильно. Имеется таблица users в ней имеется данные для регистрации и данные для профиля. ...

как правильно написать запрос
в базе данных есть таблица `ID`, `REGION_ID`, `LID`, `NAME`, `SHORT_NAME` она уже заполнена данными 163, 82, ru, Adygeya Resp,...

9
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
05.08.2010, 23:32
попробуйте мини-условия в одном большом условии занести в скобки
1
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.08.2010, 00:40
acupation, покажите как выводите.
P.S. зачем вытаскивать лишние данные из таблицы? Некоторые Вам и так известны( Вы их в условии используете ). И еще, если мне не изменяет память, то после FROM нужно указывать таблицу( -ы ), поля которой( -ых ) указаны после SELECT. Другими словами, если Вы вытаскиваете из таблицы
Цитата Сообщение от acupation Посмотреть сообщение
objects.*
то, после FROM достаточно написать только
Цитата Сообщение от acupation Посмотреть сообщение
objects
.
Могу ошибиться.
0
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546
06.08.2010, 00:58  [ТС]
Полностью код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
$object=mysql_query("SELECT objects.* FROM objects, slots WHERE objects.user='".$stat['user']."' AND slots.id=".$stat['id']."  AND objects.komis=0 AND objects.sclad=0 AND objects.id NOT IN (slots.1,slots.2,slots.3,slots.4,slots.5,slots.6,slots.7,slots.8,slots.9,slots.10,slots.11,slots.12,slots.13,slots.14,slots.15,slots.16,slots.17,slots.18,slots.19,slots.20,slots.21,slots.22) AND objects.bank=0 OR objects.bank=2 ORDER BY time DESC");
 
###НАЧАЛО ЦИКЛА
for($i=0; $i<mysql_num_rows($object); $i++) {
$objects=mysql_fetch_array($object);
$obj_inf=explode("|",$objects['inf']);
$iteminfo=mysql_fetch_array(mysql_query("SELECT title FROM items WHERE name='".$objects['name']."' LIMIT 1"));
 
 
echo"
<tr>
<td>
 
<table width=100% cellspacing=0 cellpadding=3 border=1 bordercolor=CCCCCC bgcolor=EBEDEC>
<tr";
 
if ($objects[bank]) echo" bgcolor='DDDDDD'";
 
echo">
<td width=33% align=center><b>$iteminfo[title]</b><br><small>Долговечность:".$obj_inf['6']." [".$obj_inf['7']."]</small><br><small>".$min_kol."</small></td>
<td width=34% align=center><img src='../img/items/".$obj_inf['0'].".gif'></td>
<td width=33% align=center>";
 
 
if ($objects[bank]){
echo"<a href='bank.php?set=edit&out=".$obj_inf['0']."&tmp=$objects[id]'>Изъять из ячейки</a><br>";
echo"<small><i>(Находится в ячейке)</i></small>";}
 
else echo"<a href='bank.php?set=edit&in=".$obj_inf['0']."&tmp=$objects[id]'>Положить в ячейку</a><br>
<small><i>(Находится в рюкзаке)</i></small>";
 
echo"</td>
</tr>
</table>
 
 
</td>
</tr>
";
 
 
}
###КОНЕЦ ЦИКЛА
 
 
if ($i==0) echo"<tr><td align=center><i>Рюкзак пуст!</i></td></tr>";
0
Благотворец
 Аватар для arvitaly
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
06.08.2010, 01:13
как было сказано выше скобки поставьте

SQL
1
(objects.bank=0 OR objects.bank=2)
1
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546
06.08.2010, 01:13  [ТС]
Вот так вот выводит при нынешнем коде. Если без OR objects.bank=2 то выводит все норм, по базе, все эелементы по одному... Почему-то проблема в OR.

arvitaly, +100500)) Спасибо))))) Решено))
Миниатюры
Как правильно строить запрос  
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.08.2010, 01:15
Что первое бросилось в глаза так это:
Цитата Сообщение от acupation Посмотреть сообщение
for($i=0; $i<mysql_num_rows($object); $i++) {
Вместо этого цикла используйте
PHP
1
2
3
4
5
6
7
<?php
...
while ( $objects=mysql_fetch_assoc($object) ) {
...
}
...
?>
Во-вторых, если не хотите использовать mysql_fetch_assoc(), то приписывайте флаги к mysql_fetch_array(). Флагами могут быть:
MYSQL_NUM - возвращает индексный массив;
MYSQL_ASSOC - возвращает ассоциативный массив ( аналогично вызову mysql_fetch_assoc() );
MYSQL_BOTH - возвращает оба массива. Это значение по умолчанию для mysql_fetch_array(). Как Вы понимаете, если возвращается оба массива, то и памяти должно заниматься под эти 2 массива.
Я вижу, Вы используете только ассоциативный массив. Зачем Вам индексный?
Внесите изменения, которые я написал выше и отпишитесь о результате.

Цитата Сообщение от acupation Посмотреть сообщение
objects.bank=0 AND objects.bank=2
Одно и тоже поле не может быть равно разным значениям. Вы пытаетесь вытащить запись из таблицы в которой поле `bank` должно быть равно и 0 и 2
1
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546
06.08.2010, 01:19  [ТС]
Работает так же идеально.
А если не найдены значения с такими условиями? До этого я писал
PHP
1
if ($i==0) {...}
а теперь?
0
 Аватар для romchiksoad
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
06.08.2010, 01:35
Цитата Сообщение от acupation Посмотреть сообщение
А если не найдены значения с такими условиями?
А каким образом $i относится к возвращаемым значениям? При первом пробеге цикла переменная $i будет равна 0. Не пойму как это Вам помогало определить найдены значения или нет.
Теперь, если Вам нужно знать количество вернувшихся строк, используйте:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
...
if ( mysql_num_rows( $query ) > 0 ) {
//Цикл while(){}
...
}
else {
//Что-то другое
...
}
?>
1
 Аватар для acupation
67 / 67 / 6
Регистрация: 26.03.2010
Сообщений: 546
06.08.2010, 01:39  [ТС]
Спасибо.
Цитата Сообщение от romchiksoad Посмотреть сообщение
При первом пробеге цикла переменная $i будет равна 0. Не пойму как это Вам помогало определить найдены значения или нет.
До этого как-то работало)) воть))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.08.2010, 01:39
Помогаю со студенческими работами здесь

Как правильно отправлять запрос
Правильно ли я расставил кавычки ? Все по разному ставят кавычки, хотелось бы узнать как по книжке задумано их расставлять и писать...

Как правильно составить запрос в запросе?
в таблице есть строки с id: id = 1 id = 2 id = 3 id = 4 id = 5 Как сделать, что бы выборка произошла сверху вниз от маленько...

Как правильно составить такой запрос?
2 таблицы: group - категория товаров с полями id, name_group biggroup - подкатегории товаров с полями id,name,section Связь между...

Как правильно составить запрос с LIMIT?
Здравствуйте. Хочу выбрать 10 пользователей из базы, какие 10 - зависит от страницы, на которой я нахожусь. И что то не получается у меня...

Как правильно сделать запрос в базу?
одна бд, в ней две таблицы: 1. монтаж (id, cat,name,price,desc) пример (1, 1, name, 4400, описание) id заполняется автоматом. 2. фото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru