За последние 24 часа нас посетили 32857 программистов и 1820 роботов. Сейчас ищет 851 программист ...

Зопрос к ДБ. Помогите с кодом

Тема в разделе "PHP для новичков", создана пользователем MrAndrew, 24 сен 2010.

  1. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    Выдаётся следующая ошибка:

    [sql]DB Error: Bad SQL Query: SELECT user_t_images, user_name, user_id, SUM(image_hits) AS sum FROM 5images_users, 5images_images WHERE user_level >= '2' ORDER BY user_t_images DESC LIMIT 10
    Column 'user_id' in field list is ambiguous[/sql]

    Сам запрос:

    PHP:
    1. $sql = "SELECT user_t_images, user_name, user_id, SUM(image_hits) AS sum FROM ".USERS_TABLE.", ".IMAGES_TABLE."
    2. WHERE user_level >= '".USER."'
    3. ORDER BY user_t_images DESC
    4. LIMIT 10";
    Что неверно, поправьте пжл... Спасибо
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    MrAndrew
    походу, обозначь поля как `5images_users`.`user_t_images` и т.д. то есть укажи префикс таблицы
     
  3. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    user_t_images сделать 5user_t_images?
     
  4. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    А не WHERE user_id он просит?
     
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    для всех укажи, с какой таблицы какое поле ты выбираешь
     
  6. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    Не, не разберусь никак :-(
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    SELECT 5images_users.user_t_images, 5images_users.user_name, 5images_users.user_id, SUM(5images_users.image_hits) AS sum FROM 5images_users, 5images_images WHERE 5images_users.user_level >= '2' ORDER BY 5images_users.user_t_images DESC LIMIT 10
    только я не знаю какие поля относятся к какой таблице, сам смотри
     
  8. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    ааа, понял. спасибо сейчас попробую
     
  9. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    Работает, но странную сумму посчитал и показал только одного пользователя ((
     
  10. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    MrAndrew
    ну вот. значит не правильно составлен сам запрос или не тот префикс таблицы поставил
     
  11. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    Если сделать допустим так:



    WHERE 5images_user.user_id = $user_id";

    $user_id = 1;

    Тогда работает, но считает только первого, а мне нужен список имен... Хмм... Не пойму как сделать
     
  12. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    в начальном варианте у тебя
    WHERE user_level >= '2'

    сейчас у тебя уже user_id значится в where. Ты определись както

    WHERE 5images_user.user_id = $user_id";
     
  13. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    Сорри я неправильно сказал. Конечно. Если сделать так:

    [sql]
    $user_id = 1;
    $sql = "SELECT 5images_users.user_t_images, 5images_users.user_name, 5images_users.user_id, SUM(5images_images.image_hits) AS sum FROM ".USERS_TABLE.", ".IMAGES_TABLE."
    WHERE 5images_user.user_id = $user_id";
    ORDER BY 5images_users.user_t_images DESC
    LIMIT 10";[/sql]

    Тогда считает сумму пользователя с ID = 1. А как посчитать это значения и выводить список пользователей с наибольшим image_hits?
     
  14. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    1. убери where
    2. ORDER BY image_hits DESC LIMIT 10
     
  15. MrAndrew

    MrAndrew Активный пользователь

    С нами с:
    11 дек 2009
    Сообщения:
    74
    Симпатии:
    0
    [sql]$sql = "SELECT 5images_users.user_t_images, 5images_users.user_name, 5images_users.user_id, SUM(5images_images.image_hits) AS sum FROM ".USERS_TABLE.", ".IMAGES_TABLE."
    user_id = $user_id
    ORDER BY image_hits DESC
    LIMIT 10";[/sql]

    PHP:
    1. DB Error: Bad SQL Query: SELECT 5images_users.user_t_images, 5images_users.user_name, 5images_users.user_id, SUM(5images_images.image_hits) AS sum FROM 5images_users, 5images_images; user_id = 1 ORDER BY image_hits DESC LIMIT 10
    2. 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 'user_id = 1 ORDER BY image_hits DESC LIMIT 10' at line 2
     
  16. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Блядь, когда вы научитесь пользоваться алиасами, как минимум?

     
  17. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    В простом запросе они и на хрен не нужны.
     
  18. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Greg1978
    Простой запрос это SELECT wine FROM bottle ? =)