2017-10-03 4 views
0

Ich habe es schwer zu versuchen, zu finden, ob ich das tun kann. Also, von einer Tabelle möchte ich GROUP BY nur verwenden, wenn der w.type ist "Objekt" das andere Objekt muss nicht gruppiert werden.MySQL-Gruppe nur wenn Bedingung

SELECT COUNT(*) as number, w.name, w.type 
FROM storage AS s 
LEFT JOIN weapon AS w ON w.id=s.weapon_id 
WHERE s.owner_id = 'ID' 
GROUP BY s.name 
ORDER BY w.type 

Wie Sie sehen können, diese Abfrage Gruppe von allem.

Ich versuchte mit UNION, aber es scheint kompromittiert, weil die doppelte Abfrage auf der gleichen Tabelle ist. Und ich habe nach Case gesucht, aber ich bin mir nicht sicher, wie ich es benutzen soll.

Danke fürs Lesen!

Bearbeiten: Dies ist für die Anzeige von Inventar im Spiel. Jeder Waffen-Buckler ist einzigartig, aber du kannst nur wenige verschiedene Waffen mit demselben Namen haben. Objekte haben diese Beschränkung nicht, ich brauche sie gruppieren nach und zeigen dem Spieler die Nummer des gleichen Gegenstandes.

Spieler werden sehen:

Spieler Inventar

  • Waffe

Diamant Schwert, Iron Sword, Iron Sword

  • Objekt

Apfel x2, Birne x3, Ei x1

+1

Können Sie einige Beispieldaten gemeinsam nutzen und das Ergebnis, das Sie versuchen, dafür zu bekommen? Es würde die Frage viel klarer machen – Mureinik

+0

Warum glauben Sie, UNIONing zwei Abfragen an der gleichen Tabelle "kompromittiert" die UNION-Abfrage? – Uueerdo

+0

Ich aktualisiert, ist es genug zu verstehen? Entschuldigung, ich bin nicht so fließend – Mobidi

Antwort

1

Sie erwähnen, Sie haben eine UNION versucht, aber wenn ich nicht nur müde bin und etwas vermisse, funktioniert das nicht?

SELECT COUNT(*) as number, w.name, w.type 
FROM storage AS s 
LEFT JOIN weapon AS w ON w.id=s.weapon_id 
WHERE s.owner_id = 'ID' AND w.type = 'Object' 
GROUP BY s.name 
UNION 
SELECT 1 as number, w.name, w.type 
FROM storage AS s 
LEFT JOIN weapon AS w ON w.id=s.weapon_id 
WHERE s.owner_id = 'ID' AND w.type != 'Object' 
GROUP BY w.id 
ORDER BY w.type 

In der zweiten Auswahl würde die Gruppe durch eine eindeutige Kennung sein - ich bin Namen und Typ ausreichend wäre unter der Annahme, aber ich drehe blinder ohne zu sehen, Daten

+0

Da der letzte Teil eine Aggregatfunktion aber keine Gruppe von hat, wird es eine einzelne Zeile geben, die die Anzahl aller nicht hat " Objekt "Objekte" und ein (effektiv) zufälliger Name und Typ von einem von ihnen. Sie brauchen die Zählung im letzten Teil nicht wirklich; nur '1 als Nummer'._ – Uueerdo

+0

Gut entdeckt, das habe ich vermisst. Ich werde aktualisieren –

+0

Genau was kam @Uueerdo – Mobidi

Verwandte Themen