|
|
|
| Помогите, пожалуйста, решить задачу! Мне нужно сделать следующие: в БД хранятся слова, мы возьмём за пример, цифры, так будет проще объяснить. Мне нужно их вытащить, всего их 24 и сделать их во в таком виде:
1 – 2
2 – 1
2 – 3
3 – 2
3 – 4
4 – 3
И так далее…..
Я сделал вот так:
<?
require_once("class/sql.class.php");
$my = new class_sql;
$my->sql_connect();
$my->sql_query="select * from info WHERE ORDER BY word";
$my->sql_execute();
if (@mysql_num_rows($my->sql_res)!=0)
{
$N=0;
$a=array();
while ($1_array = mysql_fetch_array($my->sql_res)) {
$a[]=$1_array['word'];
$N++;
}
$b=array();
for ($i=0;$i<$N;$i++)
{
for ($j=0;$j<$N;$j++)
{
if ($a[$i]<>$a[$j])
{
echo $b[]=$a[$i].' - '.$a[$j]."<br>";
}
}
}
}
?>
|
Может можно как-то подругому, с более меньшим количеством циклов??? | |
|
|
|
|
|
|
|
для: Diablo_
(18.11.2006 в 00:18)
| | Не очень понятно, а что в столбце word хранится? | |
|
|
|
|
|
|
|
для: cheops
(18.11.2006 в 14:08)
| | в столбце word хранится одно или сочетания нескольких слов
Вот и нужно сделать:
Ячейка 1 – ячейка 2
Ячейка 2 – ячейка 1
Ячейка 2 – ячейка 3
Ячейка 3 – ячейка 2
Ячейка 3 – ячейка 4
Ячейка 4 – ячейка 3
Ячейка 4 – ячейка 5
Ячейка 5 – ячейка 4
……………..
……………
………….. | |
|
|
|
|
|
|
|
для: Diablo_
(18.11.2006 в 14:22)
| | Т.е. хранится строка "первое слово - второе слово" или "первое слово"? | |
|
|
|
|
|
|
|
для: cheops
(18.11.2006 в 14:34)
| | я отредактировал второе сообщение что бы было понятнее | |
|
|
|
|
|
|
|
для: Diablo_
(18.11.2006 в 14:22)
| | Если записи нумерованы (id), то проблему удобнее решить средствами MySQL
SELECT snd.word, fst.word
FROM info AS fst, info snd
WHERE fst.id = snd.id + 1
|
Т.е. таблица должна иметь примерно такую структуру
CREATE TABLE info (
id int(11) NOT NULL auto_increment,
word int(11) NOT NULL,
PRIMARY KEY (id)
);
|
| |
|
|
|
|
|
|
|
для: cheops
(18.11.2006 в 14:43)
| | А если выбираемые слова, должны отвечать отпределённому требованию? допустим все слова во второй ячейке которого установлено значение 1! | |
|
|
|
|
|
|
|
для: Diablo_
(18.11.2006 в 15:18)
| | Добавьте ещё одно условие
SELECT snd.word, fst.word
FROM info AS fst, info snd
WHERE fst.id = snd.id + 1 AND fst.second = 1
|
| |
|
|
|