Помогите с sql запросом

Discussion in 'PHP' started by TreV@N, 19 Jun 2013.

  1. TreV@N

    TreV@N Elder - Старейшина

    Joined:
    14 Jul 2008
    Messages:
    135
    Likes Received:
    48
    Reputations:
    19
    Всем привет.Может кто поможет.Суть такова, можно ли при выборки в условии сравнивать значение колонки с названием колонки.

    PHP:
    SELECT mag.id,mag.name,kol.kol FROM `mag` as mag INNER JOIN `products` as kol ON mag.id = (Здесь указать название колонки)
     
  2. shude

    shude New Member

    Joined:
    15 May 2010
    Messages:
    8
    Likes Received:
    3
    Reputations:
    5
    Не совсем понятен вопрос. Название какой колонки ? В этой же таблице ? если да, то в чем проблема написать руками ? Опишите конкретно поставленную задачу.
     
  3. TreV@N

    TreV@N Elder - Старейшина

    Joined:
    14 Jul 2008
    Messages:
    135
    Likes Received:
    48
    Reputations:
    19
    Я пишу для своего интернет магазина такую функцию "Количество определенного товара в разных магазинах".Есть две таблицы mag(здесь хранится список магазинов ) с такой структурой:
    Code:
    | id | name |
    | 1  | test   |
    | 2  | test2 |
    
    и products(здесь хранятся свойственно товары) с такой структурой:

    Code:
    | id | name | image | price |
    Я делаю такую логику,при создании нового магазина в таблице products создается новая колонка с названием "mag_(здесь id магазина)"
    Code:
    | id | name | image | price | mag_1 |
    Возможно ли при выборки в условии сравнивать значение колонки с названием колонки магазина(mag_ 1)

    PHP:
    SELECT mag.id,mag.name,kol.kol FROM `mag` as mag INNER JOIN `products` as kol ON mag.id = (Здесь указать название колонки)
    Как то так,надеюсь будет понятно :)
     
    #3 TreV@N, 21 Jun 2013
    Last edited: 21 Jun 2013
  4. shude

    shude New Member

    Joined:
    15 May 2010
    Messages:
    8
    Likes Received:
    3
    Reputations:
    5
    В корне не правильная логика. Правильно назвать колонку mag_id и хранить для каждого товара id магазина в котором он есть. Так же создать внешний ключ по полю mag_id в одной таблице и id и в другой. Это при условии что один товар не может находиться в двух или более разных магазинах. Если товар может находиться в разных магазинах и это очень важный параметр, тогда нужно как минимум 3 таблицы:

    [магазины]
    ID | NAME

    [Товары]
    ID(товара) | Name(Имя товара)

    [Наличие]
    ID(Магазина) | ID_p(товара)

    Главное правильно связать индексы.
    А создавать каждый раз дополнительную колонку в таблице это грубая ошибка в данном случае.
     
    1 person likes this.