ФорумРазработкаБазы данных → Вложеный запрос и Груп_Конкат

Вложеный запрос и Груп_Конкат

  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 2:55

    Народ может кто-то стыкался: надо чтото вроде вот такого:
    SELECT table1.*
    , GROUP_CONCAT( (SELECT table2.name FROM table2 WHERE table2.table1_id=table1.id) SEPARATOR '; ' ) as all_names
    FROM table1 join,join,where,limit,order


    Конешно всё больше запущено, но суть остаёться та же, вобщем в GROUP_CONCAT надо пхнуть вложеный запрос
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 2:59, спустя 4 минуты 31 секунду

    Смысл ещё в том, чтобы не джойнить table2, этим просто пытаюсь подоптимизировать запрос. Это вообще возможно сделать?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 24 ноября 2008 г. 3:11, спустя 12 минут 5 секунд

    на каждую строку будет вызываться подзапрос - хуевый метод
    Сапожник без сапог
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 3:56, спустя 44 минуты 48 секунд

    Разобрался.
    SELECT table1.*
    , ( SELECT GROUP_CONCAT(table2.name)as some_name FROM table2 WHERE table2.table1_id=table1.id) as all_names
    FROM table1 join,join,where,limit,order

    Вобщем примерно чтото такого - заработало
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 3:57, спустя 1 минуту 18 секунд


    на каждую строку будет вызываться подзапрос - хуевый метод
    Вторая тамличка не большая, поэтому мухель её быстренько загонит в память, но а если не так то как? тогда получиться нало LEFT JOIN джелать а потом GROUP - не похоже на выход
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 24 ноября 2008 г. 3:57, спустя 5 секунд

    Josh, быстрее?
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 5:23, спустя 1 час 25 минут 34 секунды


    Josh, быстрее?
    Не поверишь да, чем LEFT JOIN ом - раз в 5 шустее забегал
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 24 ноября 2008 г. 5:31, спустя 7 минут 56 секунд

    кулл
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 24 ноября 2008 г. 5:53, спустя 22 минуты 3 секунды


    кулл

    Ну сам представь

    TABLE 1
    id | name
    ———
    1 | name1
    2 | name2
    3 | name3
    4 | name4

    TABLE 2
    table1_id | table3_id
    ——————–
    1 | 1
    1 | 2
    1 | 4
    2 | 2
    3 | 3
    3 | 1
    3 | 4

    TABLE 3
    id | name
    ———
    1 | cat1
    2 | cat2
    3 | cat3
    4 | cat4

    В результате мне нужно получить

    "name1" , "cat1 , cat2 , cat4"
    "name2" , "cat2"
    "name3" , "cat3 , cat1 , cat4"
    "name4" , ""

    Просто вариантов я не вижу: это всё заджойнить надо причём OUTEROM, плюс ко всему задистинктить, потому как это не один гемор!!! ещё есть оутеры, мне сильно много даты вернёться. Так что в этом случае, так как показала сегодняшняя практика я прав

Пожалуйста, авторизуйтесь, чтобы написать комментарий!