これは私のテーブル構造です。ここではアイテムを交換する必要があります。つまり、タイプ3は常にペアになっています(type 3 items are always paired
)。 私はちょうど最初の1ペアのマスターを理解するためのペアアイテムを指定し、2番目のサブです。例えばSo master of the pair should not come 5,10 and 15 positions
それは私がその場所に次のアイテムを交換する必要がある場所(neaxt項目がそれをサブされますが、次の項目とみなすべきではない)ことを来る場合行番号が
pid 10 (comes in 10 position) i need to swap it like this
pid type name
.. .. ..
10 2 B2
11 3 E1(master)
12 3 A2(sub)
.. .. ..
表
pid type pname
1 1 A
2 1 B
3 2 C
4 3 D(mater)
5 3 E(sub)
6 1 A1
7 2 B1
8 1 C1
9 2 D1
10 3 E1(master)
11 3 A2(sub)
12 2 B2
13 1 C2
14 2 D2
15 1 E3
スクリーンショット
助けを
私はあなたのテーブル構造を与え、TEST DATA、私と一緒にIDEAのシェアを持って下さいませ!
CREATE TABLE IF NOT EXISTS `table_swap1` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17;
INSERTクエリ
INSERT INTO `table_swap1` (`pid`, `type`, `name`) VALUES
(1, 1, 'A'),(2, 1, 'B'),(3, 2, 'D'),(4, 3, 'E(master)'),
(5, 3, 'f(sub)'),(6, 1, 'A1'),(7, 2, 'B1'),(8, 1, 'C1'),
(9, 2, 'D1'),(10, 3, 'E1(master)'),(11, 3, 'A2(sub)'),(12, 2, 'B2'),
(13, 1, 'C2'),(14, 2, 'D2'), (15, 1, 'E2');
私の仕事と
SELECT aa.pid, (
CASE aa.pid
WHEN bb.apid
THEN bb.atype
WHEN bb.bpid
THEN bb.btype
WHEN bb.cpid
THEN bb.ctype
ELSE aa.type
END
)
TYPE , (
CASE aa.pid
WHEN bb.apid
THEN bb.aname
WHEN bb.bpid
THEN bb.bname
WHEN bb.cpid
THEN bb.cname
ELSE aa.name
END
)name
FROM (
SELECT a.pid +1 apid, a.TYPE atype, a.NAME aname,
b.pid +1 bpid, b.type btype, b.name bname,
c.pid -2 cpid, c.type ctype, c.name cname
FROM table_swap1 a, table_swap1 b, table_swap1 c
WHERE MOD(a.pid, 5) =0
AND a.pid +1 = b.pid
AND a.type =3
AND a.type = b.type
AND a.pid +2 = c.pid
)bb, table_swap1 aa
GROUP BY pid
を結果は、このクエリは、私は正確に を必要とするものでした...しかし、私の場合はクエリを作成pidは主キーです。 私は1から15 の順序で結果を得ることができません。だから、私は
を行うことができます提案のすべての種類は、PHPさせて頂いて でソリューションをしても歓迎されているか、この行番号... を行うことができますすることはMySQLやこれを行うには他の方法でこれを可能..です
私はとにかく、なぜあなたは「スワップ」する必要があるものをご使用後の... MySQLで任意の項目を理解していませんか?スワップは、レコードを取り出して別の場所に挿入するイメージをもたらしますが、これはmysqlでは無意味です。レコードをフィルタリングして、必要な方法でソートすることができます。たぶんあなたはそれがあなたのものであるかを正確に説明してください。 –
ええ、実際には、私は3列に商品をリストアップしています。タイプ1と2の商品または別々に来ますが、5,10,15ポジションで1つの大きなボックスになります。そのボックスを置くスペースはありません次のアイテムをその場所に入れ替えるのが好きです... – Gowri
更新または選択? –