2017-10-30 6 views
-2

benutzte ich diese Abfrage Werte zu zählen: -SQL-Zählung dann Summe jeder Zeile mit eindeutigen Wert

SELECT (SELECT count(u.`refered`) FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0 

Aber ich möchte in jedem zählen statischen Wert wie diese Abfrage hinzuzufügen: -

SELECT (SELECT count(u.`refered`),sum(25) FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0 

Aber das hat nicht funktioniert :(Bitte mir sagen, wo ich falsch bin ??

Zum Beispiel: -

ich nur will, wenn die Zählung das Ergebnis 8 erhält, dann komme ich in die Zählung, 8 in jeder Zählung addiere den Wert 4, dann will ich die Antwort 32. Das will ich.

+1

Was ist falsch? Haben Sie eine Fehlermeldung? –

+1

Sie haben die Hilfeseiten von SO nicht gelesen. Da bist du falsch gelaufen. Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql-query – Strawberry

+0

Hallo alle, Vielen Dank für Ihre Rückmeldung, aber ich möchte in jeder Summe statischen Wert was ich will. ?? – haha

Antwort

0

Sie können keine zwei Spalten in einer Unterabfrage in der SELECT-Klausel auswählen. So bewegen sich dies auf die FROM Klausel:

SELECT 
    u.coun, 
    u.sum25, 
    user.user_id 
FROM user 
LEFT JOIN 
(
    SELECT 
    refered, 
    count(*) as coun, 
    sum(25) as sum25 
    FROM user 
    WHERE launch=1 
    GROUP BY refered 
) u on u.refered = user.user_id 
HAVING u.coun > 0; 

UPDATE: Sie haben

hinzugefügt

Ich möchte nur, wenn Count 8 Ergebnis erhalten dann möchte ich in count 8 in jeder Zählung 4 Wert hinzufügen dann möchte ich antworten 32. das ist ich will.

zu Ihrer Frage. So wollen Sie nicht sum(25) d. H. count(*) * 25 wie in Ihrer ursprünglichen Abfrage, aber count(*) * 4 scheint es. Ersetzen Sie also 25 durch 4 in meiner Abfrage.

+0

Hallo @thorsten in deiner Anfrage habe ich Fehler bekommen. :( – haha

+0

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax entspricht, zu verwenden 'und starten = 1 GROUP BY refered) u auf u.refered = user.user_id HAVING u.coun> 'in Zeile 13 – haha

+0

Haben Sie sogar versucht, den Fehler zu erkennen?Ich habe hier einen einfachen Kopier- und Einfügefehler gemacht: 'WHERE und launch = 1', der natürlich' WHERE launch = 1' sein muss. Sie sollten solche Tippfehler selbst erkennen können, wenn Sie eine solche Fehlermeldung erhalten. –

0
SELECT (SELECT count(u.`refered`) + 25 FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0 
+0

Vielen Dank für Ihre Antwort, aber ich möchte in jeder Zählung. addieren Sie diesen Wert – haha

+0

ist Sie irgendeine Antwort wissen? – haha

+0

Während dieses Code-Snippet die Lösung ist, [hilft eine Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-results) wirklich, um die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – yivi

0

Sie können nicht zwei Werte in einem Subselect ausgeben. Sie zwei Subselects verwenden können, aber die beste Lösung zu verwenden ist, wie diese Selbst beitreten:

SELECT 
    count(*) as coun, 
    sum(25) as usum, 
    u1.user_id 
FROM user u1 
JOIN user u2 ON u2.refered = u1.user_id and u2.launch=1 
GROUP BY u1.user_id 
HAVING coun > 0 

demo

Verwandte Themen