[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    А как заставить такое работать:
    Code:
    SELECT `Catalog`.`id` FROM `main`.`cms_catalog` AS `Catalog`
    inner JOIN `main`.`cms_attribute_values` AS `J31` ON `J31`.`product_id` = `Catalog`.`id`
    WHERE
    (`J31`.`is_checked` = 1 AND (`J31`.`attribute_id` in (29, 32)) )
    [COLOR=White]and (`J31`.`value` > 2  AND (`J31`.`attribute_id` = 7))[/COLOR]
    ORDER BY `Catalog`.`price` DESC LIMIT 30
    
    Т.е. там может быть: галочка, значение или номер в списке
     
    #1821 Seravin, 26 Jan 2013
    Last edited: 26 Jan 2013
  2. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    противоречивые условия в предикате. Он ничего не будет возвращать. В первом блоке выполняется условие что attribute_id может быть 29,32 в следующем лог.блоке attribute_id еще должен равен быть 7ми. Как?? attribute_id это всегда одно значение.
    Тогда видимо
    (`J31`.`is_checked` = 1 AND (`J31`.`attribute_id` in (29, 32, 7)))
    and `J31`.`value` > 2
     
  3. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Попробуй такой запрос:

    Code:
    select Catalog.id
      from main.cms_catalog as Catalog, 
           main.cms_attribute_values as J31
     where J31.product_id = Catalog.id
       and is_checked = 1
       and J31.attribute_id in (29, 32, 7)
       and J31.value > 2
     ORDER BY Catalog.price DESC LIMIT 30
     
  4. DiffiT

    DiffiT Member

    Joined:
    15 Dec 2009
    Messages:
    195
    Likes Received:
    12
    Reputations:
    3
    Здравствуйте! Есть такая тема. В базе лежат страницы. В поле sc строка, содержащая id некоторых других страниц, которые связаны с текущей. Соответственно нужно получить саму страницу и содержимое страниц, указаных в sc Вот запрос:

    'select id, title, meta_desc, meta_keys, sm, content, lastmod, sc from SHEETS as t1 where id = "'.$sheet_id.'"
    union select id, title, content, "", 0, "", "", "" from SHEETS as t2 where t1.sc like "%"||t2.id||"%" '

    даёт ошибку Unknown column 't1.sc' in 'where clause'
    В таблице, естесственно такое поле есть.

    ЧЯДНТ?

    пысы: используется MySQL 5.0, но вроде оно такие конструкции уже поддерживает...
     
  5. pro.ject

    pro.ject New Member

    Joined:
    10 Aug 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    добрый день, вот такая незадача появилсь
    есть 2 таблицы(mysql)
    user
    PHP:
    user
    id login
    1  user1
    2  user2
    3  user3

    dates
    userid    date
      1         20
      2         20
      1         21 
      3         22
    как получить такой результат?
    PHP:
    id login     date
    1  user1      20
    ,21
    2  user2      20
    3  user3      22
     
  6. rk3v

    rk3v New Member

    Joined:
    31 Jan 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Не получается воспользоваться функцией LOAD_FILE
    SELECT * FROM web_users WHERE login = 'Admin' UNION SELECT id, GROUP_CONCAT(username), password, -1, load_file('0x2f6574632f706173737764'),2,3,4,5,6,7,8,9,10 FROM cms_users

    вместо содержимого файла выводит пустую строку, пробовал вводить и в виде /etc/passwd результат тот же.
     
  7. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Как связанны между собой таблицы ? вы скажите я напишу запрос.
     
  8. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Если честно я не понял зачем нужен юнион ? и если не трудно дайте больше информации с наглядным показом таблицы.
     
  9. 4upakabr0

    4upakabr0 Member

    Joined:
    14 May 2008
    Messages:
    124
    Likes Received:
    23
    Reputations:
    0
    Приветствую,

    Какие отличия между MySQL 5.1 и 5.5 ? Что за это время изменилось существенного? Или это вообще две параллельные ветки?
     
    #1829 4upakabr0, 2 Feb 2013
    Last edited: 2 Feb 2013
  10. DiffiT

    DiffiT Member

    Joined:
    15 Dec 2009
    Messages:
    195
    Likes Received:
    12
    Reputations:
    3
    просто не хочется делать два запроса в одну и ту же таблицу...

    Упрощённый пример таблицы примерно такой:

    Code:
    id|content|sc
    index|...|A,C
    A|...|B
    B|...|...
    C|...|...
    
    Я хочу при этом дать такой запрос, чтобы первой была строка с index, а дельше шли строки с A и C, исходя из того, что они указаны в sm. Соответственно, если сделать запрос с A, то должна выбраться сначала строка с A, а потом с B.
     
    #1830 DiffiT, 2 Feb 2013
    Last edited: 2 Feb 2013
  11. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Для этого существует наш старый добрый друг гугле он более подробно тебе всё объяснит.
     
  12. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Во первых вы не правильно составил запрос union : Столбцы, перечисленные в части select должны быть одинакового типа. Имена столбцов, указанные в первом SELECT будут использованы как имена столбцов для всего результата. Ещё такие запросы лучше всего делать через join . Так как я до конца не понял что вам нужна написал запрос такого вида может и поможет:

    Code:
    select id
      from (select t1.id,
                   t1.title,
                   t1.meta_desc,
                   t1.meta_keys,
                   t1.sm,
                   t1.content,
                   t1.lastmod,
                   t1.sc
              from SHEETS as t1
             where id = "'.$sheet_id.'"
            union
            select t2.id,
                   t2.title,
                   t2.meta_desc,
                   t2.meta_keys,
                   t2.sm,
                   t2.content,
                   t2.lastmod,
                   t2.sc
              from SHEETS as t2
             where t1.sc like '%t2.id%')
    
     
    1 person likes this.
  13. 4upakabr0

    4upakabr0 Member

    Joined:
    14 May 2008
    Messages:
    124
    Likes Received:
    23
    Reputations:
    0
    коли я пришел сюда, значит есть в этом надобность, товарищ. о существовании гугла мне уже доложили.
     
  14. DiffiT

    DiffiT Member

    Joined:
    15 Dec 2009
    Messages:
    195
    Likes Received:
    12
    Reputations:
    3
    Типы там одинаковые были)

    А при таком написании t2.id не будет просто строкой?
     
  15. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Нет, скул сервер должен же понять с каким блоком работать и с какова блока берутся параметры.
     
  16. Killan

    Killan New Member

    Joined:
    18 Nov 2011
    Messages:
    8
    Likes Received:
    3
    Reputations:
    0
    Подскажите как конвертировать БД sql в формат xml
     
  17. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    Killan Например с помощью phpmyadmin там нажать Экспорт ->Microsoft Excel->Go
     
  18. restart_05

    restart_05 Member

    Joined:
    5 May 2009
    Messages:
    164
    Likes Received:
    6
    Reputations:
    0
    Возникла проблемка.
    Имеется бд следующего типа.
    date | value
    01.01.2013 00:00 | 10
    01.01.2013 00:10 | 13
    01.01.2013 00:20 | 17
    .....
    01.01.2013 01:00 | 20

    Как получить среднее значение за 1 час, 1 день.
     
  19. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    AVG() - функция возвращает среднее значение числового столбца.

    Code:
    SELECT AVG(column_name) FROM table_name
     
  20. pro.ject

    pro.ject New Member

    Joined:
    10 Aug 2012
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    user.id = dates.userid, но это уже не актуально,спасибо.


    у меня новая незадача) как можно оптимизировать такой запрос

    SELECT *
    FROM codes
    WHERE code NOT
    IN (
    SELECT user.code
    FROM user
    WHERE user.code != ''
    AND user.active = 1
    GROUP BY user.code
    )


    user
    ------
    id
    active
    code


    codes
    -------
    id
    code

    Задача: надо выбрать code из таблици codes, которых нету таблице user у активных пользователей. Код может уже использоваться у неактивного пользователя а может ещё вообще не присутствовать в таблице user.


    делал такой запрос
    SELECT codes.*,user.id,user.code
    FROM codes left join user
    ON codes.code = user.code
    WHERE user.active!=1
    OR user.active is NULL

    но он не подходит т.к "Код может уже использоваться у неактивного пользователя"
     
Thread Status:
Not open for further replies.