Это моя структура таблицы, здесь мне нужно поменять местами элементы. Это означает, что вы можете видеть, что тип 3 всегда идет в паре (type 3 items are always paired
).Я только что назвал парные элементы для понимания, что первая 1 в паре - главная, а вторая - саб.So master of the pair should not come 5,10 and 15 positions
если это место, мне нужно поменять следующий элемент в этом месте (следующий элемент будет подпунктом, он не должен рассматриваться как следующий элемент)
например
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
снимок экрана
- идеальное размещение
- свернутый дизайн
ДЛЯ ДАЛЬНЕЙШЕЙ ПОМОЩИ
Я ДАЛА ВАМ ТАБЛИЦУ СТРУКТУРУ И ИСПЫТАНИЯ, ПОЖАЛУЙСТА, ЕСЛИ У ВАС ИДЕЯ ПОДЕЛИТСЯ МНЕ!1031 *
Моя работа и результат
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 или любым другим способом сделать это ..