Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите составить запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
piksel
Отправлено: 12 Февраля, 2010 - 00:31:14
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




собственно сабж:
Есть 1-я таблица в ней поля id_user и id_topik
Нужно показать все записи(id_topik) из второй таблицы у которых одинаковый id_user в первой. Как то так.

буду благодарен за помощь Закатив глазки
 
 Top
USB_user
Отправлено: 12 Февраля, 2010 - 09:11:28
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Янв. 2010  
Откуда: Киев


Помог: 0 раз(а)




Если я правильно понял по описанию, то это будет выглядеть так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM табл2 WHERE id_topik IN (SELECT id_topik FROM табл1 WHERE id_user = [ID юзера] )
 
 Top
piksel
Отправлено: 12 Февраля, 2010 - 13:44:37
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




спасибо Улыбка вчера что то не сообразил сам, надо было просто поспать Улыбка
 
 Top
piksel
Отправлено: 21 Февраля, 2010 - 01:59:11
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Собствено если кому не особо лень скажите где тут ошибка?

PHP:
скопировать код в буфер обмена
  1. $req = mysql_query("SELECT * FROM `ppc` WHERE `id` IN (SELECT `id_citat` FROM `fave_citat` WHERE `id_user` = '$user_id' ORDER BY `id` DESC LIMIT " . $start . "," . $kmess . "; )");
  2.  

вот так всё работает:
PHP:
скопировать код в буфер обмена
  1. $req = mysql_query("SELECT * FROM `ppc` WHERE `id` IN (SELECT `id_citat` FROM `fave_citat` WHERE `id_user` = '$user_id')");
  2.  
 
 Top
Champion Супермодератор
Отправлено: 21 Февраля, 2010 - 09:59:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Собственно, вывод запросы в браузер и изучение его глазами и использование фнукции mysql_error тебе скажут где ошибка.
 
 Top
Lenok
Отправлено: 25 Февраля, 2010 - 08:32:03
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Подскажите что не так с запросом
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DATE_BEG FROM CLIENTS WHERE DATE_BEG BETWEEN '01.03.2009' AND '31.03.2009'

т.е. хочу сделать выборку с 1 марта 2009 по 31 марта 2009, а тут постоянно вытаскивает все записи.
 
 Top
Champion Супермодератор
Отправлено: 25 Февраля, 2010 - 09:10:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Тип поля DATE_BEG - какой? И формат даты каой в БД используется?
 
 Top
Lenok
Отправлено: 25 Февраля, 2010 - 09:27:45
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Тип поля Date, БД dbf файл. Формат даты 01.01.2009 (дд.мм.гггг)
 
 Top
Champion Супермодератор
Отправлено: 25 Февраля, 2010 - 09:34:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Точно? Очень похоже, что тип поля - строка...
 
 Top
Lenok
Отправлено: 25 Февраля, 2010 - 11:18:37
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Да точно


Прикреплено изображение (Нажмите для увеличения)
date.jpg
 
 Top
biperch
Отправлено: 25 Февраля, 2010 - 12:25:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




Lenok пишет:
Тип поля Date, БД dbf файл. Формат даты 01.01.2009 (дд.мм.гггг)

а случайно тип DATE не гггг-мм-дд
или это только у DATETIME гггг-мм-дд чч-мм-сс
 
 Top
Lenok
Отправлено: 25 Февраля, 2010 - 13:21:56
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DATE_BEG FROM CLIENTS WHERE DATE_BEG BETWEEN "2009.03.01" AND "2009.03.31"
и так попробовал, вообще не выбирает. Там указан еще размер поля 8 символов, а если все подсчитать то получается в запросе вместе с точками все 10 символов. Теперь уж совсем ничего не понимаю.
 
 Top
DimKA
Отправлено: 08 Марта, 2010 - 20:18:54
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Помогите,в чем может быть ошибка?

Цитата:
Пользователь уже существует в БДYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `users` WHERE 'dima' = `login` OR 'id-n@mail.ru' = `mail`' at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `users` WHERE 'dima' = `login` OR 'id-n@mail.ru' = `mail`' at line 1


пытаюсь проверить существует ли пользователь в БД ... он существует,но помимо сообщения об этом ещё и "вылазит" ошибка.


PHP:
скопировать код в буфер обмена
  1.  $password = md5($password);
  2.  
  3.      $check = mysql_query("FROM `users` WHERE '$login' = `login` OR '$mail' = `mail`");
  4.  
  5.      if (!$check)
  6.      {
  7.          echo"Пользователь уже существует в БД";
  8.          echo mysql_error();
  9.      }
  10. else {
  11.     $result = mysql_query("INSERT INTO users (login,date,mail,password) VALUES
  12.    ('$login','$date','$mail','$password')");
  13.  
  14. }
  15.     if ($result == 'true') {
  16.        
  17.         echo"ok";
  18.     }
  19.    else{
  20.  
  21.        echo mysql_error();
  22.    }
  23.  
 
 Top
SAD Модератор
Отправлено: 08 Марта, 2010 - 20:34:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




А что Вы выбираете этим запросом?
PHP:
скопировать код в буфер обмена
  1. $check = mysql_query("FROM `users` WHERE '$login' = `login` OR '$mail' = `mail`");

Должно быть
PHP:
скопировать код в буфер обмена
  1. $check = mysql_query("SELECT * FROM `users` WHERE `login`='$login' OR `mail`='$mail' LIMIT 1");

И проверка
PHP:
скопировать код в буфер обмена
  1. if(mysql_num_rows($check)==1)
  2.   echo "Пользователь уже существует в БД";
 
 Top
DimKA
Отправлено: 08 Марта, 2010 - 20:40:48
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




SAD,спасибо! А зачем LIMIT 1 ? Что это значит?


Отредактировано модератором: SAD, 08 Марта, 2010 - 20:43:26
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB