2016-04-17 12 views
0
SELECT distinct COUNT(s.title) as total_tags 
    FROM products s 
INNER JOIN products_vt vt on vt.pruduct_id=s.id 
where s.deleted!=1 
    AND vt.positives<5 
    AND (s.title like '%neon pictures free screensaver%' 
     OR s.title LIKE 'neon%' 
     OR s.title LIKE '%neon' 
     OR s.title LIKE '%neon%' 
     OR s.title LIKE 'pictures%' 
     OR s.title LIKE '%pictures' 
     OR s.title LIKE '%pictures%' 
     OR s.title LIKE 'free%' 
     OR s.title LIKE '%free' 
     OR s.title LIKE '%free%' 
     OR s.title LIKE 'screensaver%' 
     OR s.title LIKE '%screensaver' 
     OR s.title LIKE '%screensaver%') 
ORDER by s.title like '%neon pictures free screensaver%' desc , 
      s.title LIKE 'neon%' desc , 
      s.title LIKE '%neon' desc , 
      s.title LIKE '%neon%' desc , 
      s.title LIKE 'pictures%' desc , 
      s.title LIKE '%pictures' desc , 
      s.title LIKE '%pictures%' desc , 
      s.title LIKE 'free%' desc , 
      s.title LIKE '%free' desc , 
      s.title LIKE '%free%' desc , 
      s.title LIKE 'screensaver%' desc , 
      s.title LIKE '%screensaver' desc , 
      s.title LIKE '%screensaver%' desc 

Ergebnis: 2549Unterschiedliche Ergebnisse von Distinct Count und wählen Sie verschiedene Abfragen

SELECT distinct(s.title), 
     s.date_updated, 
     s.title, 
     s.id, 
     s.icon, 
     s.downloads, 
     s.date, 
     s.date_updated, 
     s.version, 
     s.description80, 
     s.downloads, 
     s.views, 
     s.type, 
     s.platform, 
     s.rating_users, 
     vt.positives, 
     vt.total, 
     vt.permalink, 
     vt.scan_date, 
     s.keywords 
    FROM products s 
INNER JOIN products_vt vt on vt.pruduct_id=s.id 
where s.deleted!=1 
    AND vt.positives<5 
    AND (s.title like '%neon pictures free screensaver%' 
     OR s.title LIKE 'neon%' 
     OR s.title LIKE '%neon' 
     OR s.title LIKE '%neon%' 
     OR s.title LIKE 'pictures%' 
     OR s.title LIKE '%pictures' 
     OR s.title LIKE '%pictures%' 
     OR s.title LIKE 'free%' 
     OR s.title LIKE '%free' 
     OR s.title LIKE '%free%' 
     OR s.title LIKE 'screensaver%' 
     OR s.title LIKE '%screensaver' 
     OR s.title LIKE '%screensaver%') 
ORDER by s.title like '%neon pictures free screensaver%' desc , 
      s.title LIKE 'neon%' desc , 
      s.title LIKE '%neon' desc , 
      s.title LIKE '%neon%' desc , 
      s.title LIKE 'pictures%' desc , 
      s.title LIKE '%pictures' desc , 
      s.title LIKE '%pictures%' desc , 
      s.title LIKE 'free%' desc , 
      s.title LIKE '%free' desc , 
      s.title LIKE '%free%' desc , 
      s.title LIKE 'screensaver%' desc , 
      s.title LIKE '%screensaver' desc , 
      s.title LIKE '%screensaver%' desc 

Ergebnis: 2492

+0

Ihre Suchbedingung (und order by clause) ist zu kompliziert und kann auf '... und (am Titel LIKE '% neon%' ODER stitle LIKE '% pictures%' oder stitle LIKE abgekürzt werden '% free%' ODER s.title LIKE '% screensaver%') '. – PerlDuck

+0

Auch sehe ich nicht die Verwendung Ihrer Order-by-Klauseln. Ich frage mich, warum sie keine Syntaxfehler aufwerfen, sondern raten, dass sie als Booleans ausgewertet werden und schließlich 'order by false, false, false, true, false, false, ...' oder ähnliches ergeben. Wenn Sie nach Titel sortieren möchten, tun Sie das einfach so: 'order by s.title desc'. Punkt. – PerlDuck

Antwort

0

Eine Abfrage wie die erste werden, zählen alle Aufzeichnungen und geben Ausgabe, und es wird nicht für unterschiedliche Werte zählen. SELECT distinct COUNT(s.title) (die erste Operation wird die Zählung sein, dann eindeutig).

Die zweite Abfrageausgabe sind stattdessen die eindeutigen Werte.

1

Ich glaube nicht, dass beide Abfrage richtig strukturiert ist. Wenn Sie die Anzahl der verschiedenen Titel dann die erste Abfrage sollte mögen sein:

SELECT COUNT(DISTINCT s.title) as total_tags... 

Wenn Sie eine Liste von verschiedenen Titeln wollen, dann müssen Sie die anderen Zeilen aus der Abfrage beseitigen:

SELECT DISTINCT s.title as total_tags... 
0

Dank für Antworten, löste ich es mit GROUP BY anstelle von SELECT DISTINCT in der zweiten Abfrage.

Verwandte Themen