2010-12-09 9 views
1

ネットワークノードマッピングプログラムで使用するためにMySqlテーブルを再フォーマットしたいと思います。同じテーブルフィールドの要素のすべての組み合わせを取得するためのMySqlクエリ

| ID | story | org | scribe | 

と私はこのような二つの出力テーブルにすべての組織の名前を引くしたいと思います::オリジナル形式は

| org1 | org2 | scribe | weight of connection | 

ORG1およびORG2の両方元のテーブルに同じフィールドから来て、 1人または複数の筆記者を共有することによって互いに関連する。すべてのスクライブは一意のIDを持っています。もちろん、私は重複したエントリーを望んでいません。

何かCANこれまでのところ、リストのいずれかの組織に接続されているすべての組織を抽出するには、その組織を '%text%'検索してからその組織を出力から除外する:自己結合またはそれがうまくいくかもしれないケースについてのいくつかのトリックがありますように

SELECT 'tabitha' as org1, 
org as org2, 
teller as scribe_id, 
count(teller) as weight 
FROM `stories` 
WHERE teller in 
(
(SELECT 
teller 
FROM `stories` 
WHERE org like '%tabitha%' 
group by teller) 
) 
and org not like '%tabitha%' 
group by teller, org 

は、だから私は感じるが、私はまだ何も見つかっていません。

+0

ちょっとした調整をしていただきありがとうございます。 –

答えて

0

私はあなたが何をしようとしているのかはっきりしませんが、おそらくこのようなものでしょうか?これは、(両方が同じ表)窓口でt1とt2の間の結合を実行する

select t1.org as org1, t2.org as org2, teller as scrib_id, count(teller) as weight 
from stories t1 join stories t2 where t1.teller=t2.teller and t1.org!=t2.org 
group by teller,t1.org 

、それ自体に参加レコードを除外

Iは方法オフかもしれないが、おそらくいくつかのバージョンでは、ジョイン構文が役に立ちます。

+0

ニース!以前は2つの条件を使用したことはありませんが、ここで動作することを覚えておく必要があります。私が行った参加の中で最も近いものは、累積分布を得るための公式です。私は、以下の最終クエリを投稿します:話から重量 としてORG2、scrib_idとして t1.teller、 数(個別のt1.storyが)ここで話さt2に参加T1としてORG1、 t2.orgとして t1.orgを選択しますt1.teller = t2.tellerとt1.org!= t2.org とt1.orgには( 'none'、 '[swahili]'、[[] ') とt2.orgは含まれていません(' none ' 、 '[swahili]'、 '[]') グループby t1.teller、t1.org 注文するdesc、t1.org; –

0

このクエリが機能しました。与えられた解からの調整だけが、正確に重みを計算していないということでした。私の次の質問には

select t1.org as org1, 
     t2.org as org2, 
     t1.teller as scrib_id, 
     count(distinct t1.story) as weight 
     /* need to count the stories instead of the scribes now */  
from stories t1 join stories t2 
where t1.teller=t2.teller 
    and t1.org!=t2.org and t1.org not in ('none','[swahili]','[]') 
    /* this just excludes nonsense categories */ 
    and t2.org not in ('none','[swahili]','[]') 
group by t1.teller,t1.org 
order by weight desc, t1.org; 

- 私もそれ可能であれば、はあなたが出納またはスクライブにAPPROXIMATE試合を行うには、SQLを頼むことができるかわかりませんか?これらのIDが電話番号で、誰かが数字の1つを忘れてしまった場合、私はまだそれらをグループ化したいと思います。私はそれがmysqlには難しいと思います - 私はPythonなどが必要です。

関連する問題