Ответы пользователя по тегу MySQL
  • Как вытащить данные из таблицы по данным из where другой таблицы?

    WStanley
    @WStanley
    Back-end Developer
    У тебя написано
    SELECT *    # - выбрать все *(звездочка)
    FROM items    # - из таблицы items
    WHERE   # - где
    prise >   # - цена prise больше(пишется price правильно) 
    (			
       # Этот подзапрос вернет число которое сверяется с prise			
    	SELECT sell_prise   # - выбрать sell_prise (sell_priсe правильно)
    	FROM results    # - из таблицы results
    	WHERE items_id = 1  # - где items_id (в таблице results) = 1
    ) 
    AND id = 1;    # - и id (в таблице items ) = 1

    Что значит первую заменить на обращение ко второй?
    .
    Ответ написан
  • Объясните, как работают несколько left join?

    WStanley
    @WStanley
    Back-end Developer
    Доброго!
    Оценок у одной книги может быть несколько, жанров как я понял тоже, вот строки и задваиваются, чтобы увидеть это просто уберите группиворку и выполните запрос. Это поможет понять что происходит. А лучше уберите группировку и по очереди джойните таблицы анализируя результат, все станет понятно.

    Если на пальцах объяснять то к каждому id книги будут прикреплены все оценки этой книги
    book | rating
    ---------------
     1   |    4
     1   |    5

    Если вы джойните еще одну таблицу то картина будет примерно такой
    book | rating | gename
    ----------------------
      1   |  4    |  g1
      1   |  4    |  g2
      1   |  5    |  g1
      1   |  5    |  g2

    Соответственно после группировок у вас:
    book | rating | gename
    ----------------------
      1   |  4.5    |  g1, g2, g1, g2

    А чтоб решить проблему используйте GROUP_CONCAT_DISTINCT
    Он исключит повторяющиеся значения
    book | rating | gename
    ----------------------
      1   |  4.5    |  g1, g2

    p.s. В любой непонятной ситуации убирай группировку
    Ответ написан
    1 комментарий