2012-03-16 8 views
6

Mam problem z tej kwerendy SQL:"Nie można stosować w globalnym porządku klauzuli" z mysql zamawiania

(SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage) ORDER BY tb1.id DESC 

jakiegoś powodu dostaję:

Table 'tb1' from one of the SELECTs cannot be used in global ORDER clause 

jakieś rady?

Dzięki

Odpowiedz

8

Powodem nie działa to zewnętrzna ORDER BY nie „widzi” TB1 - widzi wyniki wewnętrznej podzapytaniu . Więc w składniowo poprawnej wersji zapytania, to po prostu ORDER BY id:

(SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage) ORDER BY id DESC 

Ale, jak inni zwracają uwagę, to może prościej napisany w jednym zapytaniu zamówionej przez id

+0

Masz Save My życie –

3

Jeśli umieścisz nawiasów wokół select następnie wewnętrzna tabela nie będzie widoczna na zewnątrz

SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage, tb1.id DESC 

I można określić wiele kolumn w jednym order by klauzuli

2

po zamknięciu nawiasy po instrukcji select, twoja druga klauzula order by staje się nieważna. Zamiast próbować łączenia zamówienia przez kolumny w jednym order by oświadczeniu tak:

SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage, tb1.id DESC 
Powiązane problemy