3

他の人を紹介する人が紹介ごとに当選確率を上げるコンテストを作成しました。ここで、実際に mysql または php を使用してより良いオッズを与える方法を理解しなければなりません。ランダムな行を選択しても、それはカットされません。

私のテーブルには、ID 用と紹介 ID 用の 2 つの列があります。このテーブルは、紹介 ID フィールドに ID を追加することで、誰が誰を紹介したかを追跡するため、データの最初の数行は次のようになります。

name   id  referralid 
mark   15   20 
ted    20 
jim    22   20

したがって、「テッド」は他の 2 人を紹介したので、勝つチャンスは 3 回あるはずです。mysqlまたはphpでこれを行うにはどうすればよいですか?

4

3 に答える 3

1
SELECT people.name, people.id
FROM people
LEFT JOIN people referred_people ON referred_people.referralid = people.id
ORDER BY RAND()
LIMIT 1

テーブルがpeopleと呼ばれると仮定すると、これが選択します

mark
ted
ted
jim

悪名高い ORDER BY RAND() 構造を使用してランダムに並べ替え (低速ですが、最大のパフォーマンスを要求しませんでした)、そのリストから 1 つの結果を選択します。

于 2012-10-16T14:38:11.690 に答える
0
select a.name,b.Odds
from (select referralid,count(1) Odds from    yourtable
group by referralid) b inner join yourtable a
on a.id=b.referralid
于 2012-10-16T14:36:15.097 に答える
0

これを試して::

乱数を取得し、その番号の行を取得してから、その行で参照 ID が指す ID を取得しないでください。

この与えられたデータで、1 または 3 を生成する場合の乱数を言います。両方の行に ted が表示されます。

于 2012-10-16T14:36:28.057 に答える