Подскажите, что я делаю не так?

Тема в разделе "Базы данных", создана пользователем lamo, 1 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    Таблицы:

    iusers
    $query = "CREATE TABLE iusers
    (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
    name VARCHAR(20),
    city VARCHAR(30),
    status SMALLINT,
    pos SMALLINT
    )


    iuser_service
    $query = "CREATE TABLE iuser_service
    (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id),
    user_id SMALLINT,
    serv_id SMALLINT,
    doplata VARCHAR(10)
    )

    Делаю запрос:
    Код:
    SELECT DISTINCT(iuser.id) FROM iuser,iuser_service WHERE iuser.status=1 AND iuser_service.id='3' AND iuser_service.user_id=iuser.id ORDER BY iuser.pos ASC LIMIT 0,10
    Хотя я точно знаю что есть пользователь у которго iuser_service.id='3' и iuser.status=1 ... но почему то запрос выполняется с нулевым результатом.. уже голову сломал не могу понять в чем причина...
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    SELECT DISTINCT(iuser.id) FROM iuser,iuser_service WHERE iuser.status=1 AND iuser_service.id='3' AND iuser_service.user_id=iuser.id ORDER BY iuser.pos ASC LIMIT 0,10
    Где у тебя таблица iuser с полем pos?
     
  3. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    Забыл дописать в условии... просто не стал публиковат все поля таблицы, в итоге удалил те... что использую в примере... это поле есть (исправил 1-й пост)

    Добавлено через 9 минут
    А вот такой запрос выполняется нормально:

    Код:
    SELECT DISTINCT(iuser.id) FROM iuser,iuser_service WHERE iuser.status=1 ORDER BY iuser.pos ASC LIMIT 0,10
    но как только появляеттся условие
    Код:
    AND iuser_service.user_id=iuser.id
    то тут что то НУЛЬ...

    смысл запроса таков - выбрать всех пользователей (id) у которых есть услуга (iuser_service.id=3) две таблицы взаимосвязаны через id (iuser) и через user_id (iuser_service)...
     
  4. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    создал таблицы добавил тестовые данные все работает. значит у тебя просто iuser_service.user_id=iuser.id нету совпадающих ключей. это 100% смотри внимательно.

    Добавлено через 1 минуту
    и еще в шапке таблица iusers а в запросе iuser может в этом причина? может у тебя в iusers есть записи а в iuser нету?
     
    lamo нравится это.
  5. lamo

    lamo Постоялец

    Регистр.:
    1 июл 2008
    Сообщения:
    51
    Симпатии:
    4
    Все понял.. извиняюсь за свою же тупоту...
    просто надо было не iuser_service.id='3' а iuser_service.serv_id='3'
     
Статус темы:
Закрыта.