2017-01-06 3 views
0

[Senden Sie uns] Bitte helfen Sie, zum Beispiel, gibt es eine DatenWie wähle ich * Bestellung nach Benutzeranmeldung?

tbl_user 
| Id | name | 
| 1 | Bayu | 
| 2 | Indra | 
| 3 | Rangga | 

tbl_data 
| Id | userId | items | 
| 1 | 1 | Knife | 
| 2 | 3 | CD | 
| 3 | 1 | Rose | 
| 4 | 3 | HP | 
| 5 | 2 | Honey | 
| 6 | 1 | cups | 
| 7 | 1 | Yarn | 
| 8 | 2 | Shoes | 

I Tabellendaten von Artikel sortieren möchten nur zum Beispiel so den Benutzerzugriff protokolliert, wenn Benutzer Bayu in Sortierergebnisse der Daten angemeldet ist die obere selbst und die Daten weiterhin besteht

userId | items | 
1 | Yarn | 
1 | cups | 
1 | Knife | 
1 | Rose | 
2 | Honey | 
2 | Shoes | 
3 | CD | 
3 | HP | 

wenn Indra anmelden, um die Ergebnisse der Sortierung:

userId | items | 
2 | Honey | 
2 | Shoes | 
1 | Yarn | 
1 | cups | 
1 | Knife | 
1 | Rose | 
3 | CD | 
3 | HP | 

oder W hen Rangga Login

userId | items | 
3 | CD | 
3 | HP | 
1 | Yarn | 
1 | cups | 
1 | Knife | 
1 | Rose | 
2 | Honey | 
2 | Shoes | 

Wie abzufragen (MySQL) select?

Antwort

2

Versuchen Sie folgendes:

select userId, items 
from tbl_data 
order by userId=:userId desc, userId asc; 

Zum Beispiel, wenn Indra angemeldet:

select userId, items 
from tbl_data 
order by userId=2 desc, userId asc; 
0

Imaging, wenn ein Benutzer Login, wird es ein $ userID auf der Seite passiert in sein:

$sql = " 
SELECT userId,items 
FROM tbl_data 
ORDER BY if (userID = $userId, 0, userId)"; 
0

Nicht die eleganteste, aber das sollte Trick tun:

SELECT userID, items FROM tbl_data, tbl_user where userId=tbl_user.id AND tbl_user.name=CURRENT_USER() 
UNION 
SELECT userID, items FROM tbl_data, tbl_user WHERE userId<>tbl_user.id AND tbl_user.name=CURRENT_USER(); 
0

Zuerst müssen Sie userIDorder by mit eingeloggten Benutzer und dann von anderen userId in aufsteigender und absteigender Reihenfolge bestellen.

select userId, items 
from tbl_data 
order by FIELD(userId , $userId) desc, userId asc;