2010-08-20 4 views
3

Я имею так много доменное имя в моей БД, напримерНахождение данных по: релевантность, а затем взять 2 результата из домена дифф

www.yahoo.com/duniya.html 
www.yahoo.com/hero.html 
www.123musiq.com/ 
www.123musiq.com/home.html 
www.123musiq.com/horo.html 
www.123musiq.com/yuva.html 
www.sensongs.com/ 
www.sensongs.com/hindi.html 
www.sensongs.com/yuva.html 
www.sensongs.com/duniya.html 
www.sensongs.pk/duniya1.html 

мне нужно сортировать их, как, первые 2 из Yahoo, то следующая 2 от 123musiq, затем 2 следующих от сенсонов. как я могу это сделать? в mysql или PHP? Я знаю, как получить доменное имя, мне нужно знать, как сортировать 2 из каждого домена?
я использую матч против метода

Ожидая выхода

 
    www.yahoo.com/duniya.html 
    www.yahoo.com/hero.html 
    www.123musiq.com/ 
    www.123musiq.com/home.html 
    www.sensongs.com/ 
    www.sensongs.com/hindi.html 

Я использую следующий код
 
SELECT x.url 
    FROM (SELECT t.url, 
       CASE 
       WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @rownum := @rownum + 1 
       ELSE @rownum := 1 
       END AS rank, 
       @domain := SUBSTRING_INDEX(t.url, '/', 1) 
      FROM URL2 t 
      JOIN (SELECT @rownum := 0, @domain := '') r 
     ORDER BY SUBSTRING_INDEX(t.url, '/', 1)) X 
WHERE x.rank <= 2 AND MATCH(teet,url,html) AGAINST ('account');

Он Показаны ошибки
 
Query : SELECT x.url FROM (SELECT t.url,    CASE     WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @row... 
Error Code : 1054 
Unknown column 'teet' in 'where clause'

Но Teet столбец в моей URL2 таблице

ответ

2

MySQL Безразлично» t имеют аналитические функции, которые вам нужны, чтобы получить две записи для каждой группы. Другая боль - это «www». усложняет размещения 2-й период ...

Использование:

SELECT x.url 
    FROM (SELECT t.url, 
       t.teet, 
       t.html, 
       CASE 
       WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @rownum := @rownum + 1 
       ELSE @rownum := 1 
       END AS rank, 
       @domain := SUBSTRING_INDEX(t.url, '/', 1) 
      FROM URL2 t 
      JOIN (SELECT @rownum := 0, @domain := '') r 
     ORDER BY SUBSTRING_INDEX(t.url, '/', 1)) x 
WHERE x.rank <= 2 
+0

@OMG: мы можем найти домен по http://stackoverflow.com/questions/3521094/how-we-can-find-domain -name-using-mysql-and-regular-expression, wht - x.domainname, x.rank, t.domainname –

+0

@Alex Mathew: Thx, обновлено. 'x' - псевдоним таблицы для производного таблицы/встроенного представления. Он используется так же, как псевдоним 't' в том, что производная таблица/встроенный вид ... –

+0

@OMG: Имя моей таблицы - url2 и имя coloum для сохранения url - это url, можно ли перезаписать SQL? –

 Смежные вопросы

  • Нет связанных вопросов^_^