2016-04-11 2 views
-3
 
book_table 
id type  name .... ...... 
1  feature  book 1 .... .... 
2  feature  book 2 .... ... 
n  feature  book n .... .... 
---------------------------------- 
1  regular  book 1 .... .... 
2  regular  book 2 ... ..... 
n  regular  book n .... ... 
---------------------------------- 
1  free  book 1 .... . 
2  free  book 2 .. ...... 
n  free  book n ......... 
---------------------------------- 

Ich möchteWie bekomme ich 1 Zeile und 6 Zeilen und alle Zeilen von Feature, regulär, freie Kategorie in der Produkttabelle?

 
id type  name 
1  feature  book 1 .... ... 
2  regular  book 1 
..  ......  ...... 
6  regular  book 6 ........ 
7  free  all............ 

erhalten, die mittlere ist 1 R. Funktion, 6 Reihe von regelmäßigen, alle Reihe von frei ..

+0

Sie müssen möglicherweise drei verschiedene Abfragen durchführen und sie zusammenführen, um die Ergebnisse zu erhalten, die Sie suchen. – ale8oneboy

Antwort

0

Sie Variablen für diese verwenden können:

SELECT id, type, name 
FROM (
    SELECT id, type, name, 
     @rn := IF(@t = type, @rn + 1, 
        IF(@t := type, 1, 1)) AS rn 
    FROM mytable 
    CROSS JOIN (SELECT @rn := 0, @t = '') AS vars 
    ORDER BY type, id) AS t 
WHERE (type = 'feature' AND rn = 1) OR 
     (type = 'regular' AND rn <= 6) OR 
     (type = 'free') 
+0

es funktioniert nicht ....... –

+0

ich habe es durch drei Abfrage behoben und dann habe ich ein Ergebnis-Array mit drei verschiedenen Array erstellt .... –

+0

@SalmanQuader Es sollte funktionieren. Es ist nicht erforderlich, drei separate Abfragen auszuführen. Welche Ergebnisse bekommst du? –

0

SELECT * FROM tbl_book WHERE display_date <= CURDATE() AND display_end_date >= CURDATE() AND TYPES='Feature' AND published='1' LIMIT 1 UNION SELECT * FROM tbl_book WHERE display_date=CURDATE() AND TYPES='Regular' AND published='1' LIMIT 6 UNION SELECT * FROM tbl_book WHERE TYPES='Free' AND published='1'

Diese Abfrage wurde bereits ordnungsgemäß ausgeführt

Verwandte Themen