SORU
28 Aralık 2008, Pazar


Bir SQL değerleri sırası ile() sipariş fıkra

Eğer uzakta (muhtemelen daha iyi bir yolu) bir değerler düzeni tarafından sipariş olup olmadığını merak ediyorum() yan tümcesi.

Sorun 2 sorgular, Kimlikleri ve tüm bilgileri alır, ikinci alır. İlk ve ikinci ile sipariş etmek istiyorum hangi Kimlikleri sırasını oluşturur. Kimlikleri bir konur() doğru sırayla fıkra.

(Çok basitleştirilmiş) gibi bir şey olur:

SELECT id FROM table1 WHERE ... ORDER BY display_order, name

SELECT name, description, ... WHERE id IN ([id's from first])

Sorun ikinci sorgu Kimliği içine sırayla aynı sonuçlar döndürmüyor yani() yan tümcesi.

Bulduğum tek çözüm sonra ikinci sorgu içine katılmış olan otomatik artan bir alan ile temp bir tabloya Kimlikleri her şeyi koymak.

Daha iyi bir seçenek var mı?

Not:İlk sorgu "kullanıcı" ve ikinci bir arka plan işlemi, 1 sorgu alt sorgu kullanarak 2 birleştirmek için bir yolu yoktur. tarafından işletilen gibi

MySQL kullanıyorum, ama diğer DBs için de var ne dedi için yararlı olabileceğini düşünüyorum.

CEVAP
28 Aralık 2008, Pazar


Kullanımı MySQL FIELD() fonksiyon:

SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])

() ALAN ilk parametre eşit olan ilk parametre dizini (ilk parametre kendisi dışında) geri dönecek.

FIELD('a', 'a', 'b', 'c')

1 döndürür

FIELD('a', 'c', 'b', 'a')

geri 3

Bu if içine kimlikleri yapıştırırsanız tam olarak ne istediğinizi yapar() madde ve ALAN() aynı sırada işlevi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liberator

    Liberator

    14 EYLÜL 2007
  • Sorikan

    Sorikan

    3 ŞUBAT 2008
  • TantalizingTrance

    TantalizingT

    15 ŞUBAT 2009