2016-05-02 20 views
0

私は画像、言語、信仰を含むbooksテーブルを持っています。信仰シリーズ(15結果)を取り出したが、私はあまりにもなく、ランダムに沿ってimageを取得したいランダムカラムMYSQLと区別する方法は?

SELECT DISTINCT faith, language from books; 

と信仰のために個別の値を取得I'am。その結果、ランダムなイメージで信仰を示すことができます。どのように私はそれを行うことができます、お勧めします。

+2

これには2つのクエリまたは1つの特に醜いクエリが含まれます。 – tadman

+1

あなたは信仰と言語のためにその質問とは異なる値を得ます。 – jarlh

+0

2つの 'SELECTS'またはクエリ?サンプルを挙げてください。 – RanaHaroon

答えて

1

クエリ

select distinct faith, language from books; 

は、あなたのテーブルは異なる信仰言語の組み合わせを選択します。あなたのテーブルには、同じ信仰のための2つのエントリと言語

 
Faith Language Image 
1  EN  img1 
1  EN  img2 
1  FR  img3 
1  FR  img4 

が含まれているので、あなたの結果は、一度だけ、それぞれの組み合わせが含まれます

 
Faith Language 
1  EN 
1  FR 

それはあなたが何を意味するか、まだあなたの質問から明らかではないが、ランダム画像。ここでは、任意に選んだ信仰、言語の組み合わせのためのマッチング画像のいずれかを取得する方法である:

select faith, language, image 
from books 
group by faith, language; 

結果は次のようになります。

 
Faith Language Image 
1  EN  img2 
1  FR  img3 

理由は、我々が行を集約ということです。 GROUP BY句では、FaithとLanguageごとに1つの結果行が必要ですが、Imageを選択し、グループごとに表示したいものを指定しません(MINやMAXなどの集計関数で行うこともできます)。 )ので、DBMSが任意に選択したFaith-Languageの組み合わせに一致する画像を1つだけ取得します。

これは既にご希望ですか?みんなに

+0

私はあなたの入力を感謝しますが、これは動作しませんでした。私は異なる '信仰 '欄を持つテーブル'書籍 'に多くの行を持っています。それ自身のBOOK IMAGEであると信じられている多くのBOOKSがあります。今私は本のテーブルからすべての信仰を引き出しています。私は自分自身に対して100冊の本を持つことができる信仰のためにランダムなイメージを設定したいと思います。クエリが実行されるたびに信仰は変わりませんが、毎回ランダムに画像を変更する必要があります たとえば - (faith:religious | image = modesty.jpg) - (faith:religious | image = book_of_religions.jpg) 言語を離れる。 – RanaHaroon

0

感謝、私はそれが実行された各信仰毎回クエリに対するフィールド2ランダム画像で明確なフィールド1faithをフェッチしています

Select random row per distinct field value?

SELECT r.faith, 
(SELECT r1.image FROM books AS r1 WHERE r.faith=r1.faith ORDER BY rand() LIMIT 1) AS image FROM books AS r GROUP BY r.faith; 

から解決策を得ました。

関連する問題