2016-03-28 10 views
1
SELECT * 
FROM `fc_product` AS a, 
(SELECT MIN(`views`) AS mini, MAX(`views`) AS maxi 
FROM `fc_product`) AS m 
WHERE a.views > 0 

Ich schrieb diese Abfrage. Ich habe in dieser Abfrage einen Fehler, wenn ich diese Aussage schriebMYSQL Klausel Fehler

"(SELECT MIN(`views`) AS mini, MAX(`views`) AS maxi FROM `fc_product`) " 
+0

Und Was ist die Fehlermeldung? –

+0

Sie können zwei verschiedene Spalten nicht in eine einzelne Spalte umwandeln. Entweder Sie müssen eine Aggregatfunktion oder eine beliebige Zeichenfolge Operation auf diesem –

+0

verwenden Es gibt keinen Fehler in Ihrer Abfrage: http://sqlfiddle.com/#!9/50e70/1 - Es ist eine andere Frage, wenn Sie das tun, was Sie brauchen –

Antwort

0

Eigentlich richtige Syntax in der Abfrage wird nach unten-

SELECT *, 
(SELECT MIN(`views`) AS mini, MAX(`views`) AS maxi 
FROM `fc_product`) AS m 
FROM `fc_product` AS a 
WHERE a.views > 0 

Sie können aber unter einfacher Abfrage für gleiche Ergebnisse keine Notwendigkeit verwenden hier- von Unterabfrage

SELECT a.*, MIN(`views`) AS mini, MAX(`views`) AS maxi 
FROM `fc_product` AS a 
WHERE a.views > 0 

Hinweis: über beide Abfrage einreihiges Ergebnis produzieren wird, wenn Sie min benötigen, basierend max Werte auf einem Feld müssen dann die Gruppe auf diesem Gebiet durch verwenden.

1

Hoffnung Diese Hilfe Ich denke, es ist nicht erlaubt innerhalb einer eine Sub-Abfrage hier ist mein Code

SELECT a.*, 
(SELECT MIN(views) FROM fc_product) as mini, 
(SELECT MAX(views) FROM fc_product) as maxi 
FROM fc_product a WHERE a.views>0 

oder versuchen zweispaltigen Ergebnis zu haben:

select * from 
(select * from fc_product WHERE views>0) t1, 
(SELECT MIN(views) as mini,MAX(views) as maxi FROM fc_product) t2