За последние 24 часа нас посетили 21840 программистов и 1076 роботов. Сейчас ищут 622 программиста ...

Подскажите не работает WHERE в запросе SQL

Тема в разделе "MySQL", создана пользователем drey19061984, 2 фев 2016.

  1. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    Здравствуйте подскажите не работает WHERE в запросе SQL,
    задача на сайте есть поле поиска по заданным параметра например - Имя и город
    есть 2 таблицы в БД, USERS и CITY, в MySQL они объеденные по внешним ключам то есть в таблице USERS есть поле CITY которое должно браться из таблицы CITY
    делаю запрос из PHP формы поиска к БД для выборки:
    Код (PHP):
    1. $query = "
    2. SELECT u.*, c.*
    3. FROM USERS u
    4. INNER JOIN CITY c
    5. ON c.idCITY = u.CITY
    6. WHERE
    7. u.FIRST_NAME LIKE 'first_name'
    8. AND
    9. CITY LIKE 'city' "; 
    так вот сам запрос без WHERE работает, но показывает всех юзеров (из таблицы USERS) у которых поле CITY не NULL, а вот когда пытаюсь задать WHERE - пишет ошибку результаты не найдены, в чем может быть причина???
    в итоге необходимо чтоб было 2 поля для поиска - имя и город которые в разных таблицах, и чтоб искалось при заполнении любого поля.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    структуру таблиц покажи. похоже неоднозначное поле CITY
     
  3. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    да и вообще странная запись
    u.FIRST_NAME LIKE 'first_name' ((:)
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ничего стремного. ищется строковый эквивалент в ячейке алиаснутой таблицы. все ок. проблема не там а в районе CITY
     
  5. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Ganzal, мне кажется человек просто не понимает конструкцию LIKE...
    возможно он ожидает одного, а результат отличный он нужного...
    Хотя кто его знает... посмотрим... ((:)
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    конструкция лайк без вайлдкардов работает как эквал. тут норм.
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    подождем тогда... мне уже тоже стало интересно (:)
    буду долга ржать, если очередной раз чуйка меня не подведет ((:)
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ну я уже одно верное предположение сделал - проблема в CITY :D
     
  9. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    таблица USERS в ней есть поля idUSERS и CITY, таблица CITY в ней поля idCITY и CITY_NAME, столбец CITY связан первичным ключом с таблицей CITY, форме поска:
    Код (PHP):
    1. Имя: <input type="text" name="first_name" id="query_text" size="60" value="">
    2. <select name="city" value="0">
    3. <option value="0">Город</option>
    4. <option value="1">Москва</option>
    5. <option value="2">Зеленоград</option>
    6.  
    вот эти значения из name="first_name" и name="city" и передаются в ПХП

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    это похоже хоть как-то на структуру таблиц? не знаешь что такое структура таблиц - спроси. не знаешь как выводить структуру таблиц - спроси. ты дал код который решению задачи поможет так как как если я сейчас встану и пойду покурить.

    короче. ливаю я из треда. у тебя айдисити в таблице сити и ты ищешь по полю сити предполагая наверное что оно в таблице сити. но по твоему правилу объединения таблиц - в таблице юзерс тоже есть поле сити. возникает неоднозначность имени поля. потому как возможно (это лишь предположение) у тебя сити в юзерс - айдишник, а сити в ситис - строка.
     
  11. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    таблица USERS
    idUSERS CITY
    1 2

    таблица CITY
    idCITY CITY_NAME
    1 Москва
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    видишь как интересно? а ищешь ты по CITY.
     
  13. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    хорошо спрошу тупой вопрос - и?))))))))))

    если ты про вот это
    Код (PHP):
    1. AND
    2. CITY LIKE 'city' 
    то да у меня из формы ж name="city" передается в ПХП?или я не о том?
    Код (PHP):
    1. <select name="city" value="0">
    2. <option value="0">Город</option>
    3. <option value="1">Москва</option>
    4. <option value="2">Зеленоград</option>
    5. </select> 
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ну ты ищешь строку там где у тебя айдишник. чо и? голова не только для того чтоб в неё есть :D
     
  15. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    так чтоли?
    Код (PHP):
    1. WHERE
    2. u.FIRST_NAME LIKE 'first_name'
    3. AND
    4. idCITY LIKE 'city' 
    так не работает
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    оооо.... не, давай еще))))
     
  17. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    ?????????))))))))))))))))))))
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    ты сам себя запутал. если ты по айдишнику города решил искать - там должна быть цифра. а если по названию - там должно быть другое поле.
     
  19. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    это для людей то что отображается на сайте в форме, а в пхп передается id1 или id2
    Код (PHP):
    1. <select name="city" value="0">
    2. <option value="0">Город</option>
    3. <option value="1">Москва</option>
    4. <option value="2">Зеленоград</option>
    5. </select> 
    Добавлено спустя 3 минуты 23 секунды:
    так работает
    Код (PHP):
    1. WHERE
    2. u.FIRST_NAME LIKE 'Андрей' 
    а так нет
    Код (PHP):
    1. WHERE
    2. u.FIRST_NAME LIKE 'Андрей'
    3. AND
    4. c.idCITY LIKE 'city' 
     
  20. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    о боги...
    ладно. покажи пхп-код, формирующий запрос.
     
  21. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    )))))))))))я тока начал учиться)))а сроки горят как обычно

    Код (PHP):
    1. <?php
    2. require '../php_primer/database_connection.php';
    3.  
    4. if (!mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)) {
    5.     exit('Cannot connect to server');
    6. }
    7. if (!mysql_select_db(DATABASE_NAME)) {
    8.     exit('Cannot select database');
    9. }
    10. /* Выполнение SQL запроса */
    11. $query = "
    12. SELECT u.*, c.*
    13. FROM USERS u
    14. INNER JOIN CITY c
    15.  
    16. ON c.idCITY = u.CITY
    17.  
    18. WHERE
    19. u.FIRST_NAME LIKE 'first_name'
    20. AND
    21. c.idCITY = 'city'
    22. ";
    23. $result = mysql_query($query) or die("Запрос ошибочный");
    24. if (!$result) {
    25.         echo "Could not successfully run query ($query) from DB: " . mysql_error();
    26.         exit;
    27.     }
    28.     
    29.     if (mysql_num_rows($result) == 0) {
    30.         echo "Результаты по заданным параметрам не найдены!";
    31.         exit;
    32.     }
    33.     while ($row = mysql_fetch_assoc($result)) 
    34.     
    35.     {
    36.     printf("
    37. <h2 style='font-size: 25px;margin-bottom: 10px;'>ФИО: " .$row['FIRST_NAME'] . " " .$row['LAST_NAME'] . "</h2> 
    38. <h3>Город: " .$row['CITY_NAME'] ." </h3>
    39. <h3>Телефон 1: " .$row['BIRTHDAY'] ." </h3>
    40.  
    41. <h3 style='font-size: 18px;margin-top: -50px;'><a href='../php_primer/show_user222.php?USER_ID=" .$row['USER_ID'] . "'>Посмотреть проект полностью</a></h3>
    42. ---------<br/>
    43. "
    44.     );
    45. }
    46.  
    47. ?>
     
  22. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    остановись и начни учиться заново. я такого использования printf еще никогда не видел...

    в общем. код нам говорит ровно то же что и было раньше. ты ищешь строку (составленную из букв, понимаешь? не тупи больше) c, i, t и y в поле которое согласно твоей же архитектуре принимает целочисленное значение. то есть чтоб искать по этому полю - туда надо циферку подставлять. понимаешь? 1, 3 и так далее. абрянс если ты хочешь искать строку с называнием города - сравнивать её надо не с идентификатором города а с названием. понимаешь? с названием. москва, зеленоград. названия. но они-то у тебя в другом поле лежат. понимаешь?
     
  23. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    - так у меня ж из формы поиска в пхп передается 1 или 2 а не имя города

    да если убираю
    Код (PHP):
    1. u.FIRST_NAME LIKE 'first_name' 
    и оставляю
    Код (PHP):
    1. CITY LIKE '1' 
    тогда конечно работает, а вместе никак и зачем мне вручную вставленная 1?
     
  24. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    текст ошибки есть?
     
  25. drey19061984

    drey19061984 Новичок

    С нами с:
    23 янв 2016
    Сообщения:
    88
    Симпатии:
    0
    вот так
    Код (PHP):
    1. CITY LIKE '1' 
    показывает Москву, если вот так
    Код (PHP):
    1. WHERE
    2. u.FIRST_NAME LIKE 'first_name'
    3. AND
    4. CITY LIKE 'city' 
    то выдает ошибку которая в коде пхп
    Код (PHP):
    1. if (mysql_num_rows($result) == 0) {
    2.         echo "Результаты по заданным параметрам не найдены!";
    3.         exit;
    4.     } 
    тоесть работает только когда
    Код (PHP):
    1. u.FIRST_NAME LIKE 'Андрей' или CITY LIKE '1' 
    а данные из поиска как будто не приходят