За последние 24 часа нас посетили 18972 программиста и 1634 робота. Сейчас ищут 1048 программистов ...

порочная связь многих со многими

Тема в разделе "PHP и базы данных", создана пользователем dark-demon, 6 янв 2008.

  1. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    простенькая задачка :)

    есть табличка с двумя полями: url, tag
    как урлы так и тэги могут повторяться, но не может быть двух одинаковых пар.
    требуется найти все такие урлы для которых проставлены все тэги из набора в N штук.
    где N - от 0 до 63

    можно создавать дополнительные таблицы, но нельзя делать больше 4 джойнов.
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    [sql]SELECT url FROM table WHERE tag IN ($tagList) GROUP BY url HAVING COUNT(*) = $tagCount[/sql]
     
  3. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    хорошо :)

    задачка по сложнее: всё то же самое, но наборов может быть несколько. требуется найти урлы для которых проставлены все тэги из хотябы одного набора.

    в резалте не должно быть дубликатов.
     
  4. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    попрбовать не могу, но думаеца
    [sql]SELECT url FROM table GROUP BY url HAVING SUM(tag IN ($tagList1)) = $tagCount1 OR SUM(tag IN ($tagList2)) = $tagCount2 ...[/sql]
     
  5. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    думаю это будет очень медленно...
     
  6. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    думаю что стоит попробовать url и tag сделать int, индексы повешать
    мне думаеца будет быстро.

    и если всетаки будет медленно, тогда уж колдавать с
     
  7. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    такие индексы ещё не изобрели, которые тут можно было бы применить :)
     
  8. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    давай поспорим на читыре(4) зажигалки (и нахрена они мне?) чо можно подобрать такой индекс который будет работать (с ним запрос будет работать быстрее) на этом SELECT'е
     
  9. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    а давай :)
    [а мне они нафига?]
     
  10. Anonymous

    Anonymous Guest

    ы лол
    а зажгигалки - что бы жечь, конешна!!!!
     
  11. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    о, точно! из них хорошие питарды получаются :)
     
  12. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    нужны данные, совокупность груды тагов и груды url, приближенные к реальным
     
  13. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    великий рандом спасёт отца русской демократии :)
     
  14. Anonymous

    Anonymous Guest

    точно.. показывай... "груды"... чьи нить...
     
  15. Anonymous

    Anonymous Guest

    алкоголь... чудосмайлег.... "груды"... и порочные связи навеяли....

    # отцензурил со страшной силой Hight
    # url

    Телефон не дам, кобели проклятые..........
     
  16. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    мм кавайные груды
    * ребзя, я нашол таво спамера
     
  17. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    сейчас придёт Hight и расстреляет Олега :)
     
  18. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    ой, уже :)
     
  19. Anonymous

    Anonymous Guest

    вот токо дай им права цензурить во всех темах........
     
  20. Anonymous

    Anonymous Guest

    убейте... мне и так плхо , я не обжус..... ))))