Bir SQL değerleri sırası ile() sipariş fıkra | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • BuzzFeedVideo

    BuzzFeedVide

    10 AÄžUSTOS 2011
  • cosmicrocketman

    cosmicrocket

    17 NÄ°SAN 2006