|
|
|
| Вот такая проблема:
Есть таблица данных mysql, в которой некоторые первичные ключи отсутствуют.
Как можно оптимизировать таблицу, чтобы снова был порядок в ключах, чтобы не было такого, что некоторых строк нет?
К примеру:
после удаления пропала строка с ключом 3:
1 - текст
2 - текст
4 - текст
теперь нужно поменять первичные ключи чтобы получилось:
1 - текст
2 - текст
3 - текст
Как это сделать? | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:04)
| | Никак.
Первичный ключ - это совсем не то что Вы решили.
И Вы ошиблись с разделом.
Поищите в разделе MySQL - там каждая десятая тема такая. | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:04)
| | а зачем что бы ключ шёл по порядку? | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 21:10)
| | Мне нужно сгенерить случайную строку.
Когда нет строки с каким либо ключом, у меня присходит ошибка. | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:14)
| | посчитай кол-во строк и исходи из этого, а первичный ключ оставь в покое. | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 21:19)
| | select * from TABLE order by rand() limit 1
и не надо ничё счетать :) | |
|
|
|
|
|
|
|
для: ChieFSS
(31.10.2009 в 21:22)
| | У меня миллион записей, такой способ работает у меня 15 сек. Это долго | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:25)
| | Тогда вначале вынуть все id:
select `id` from table
потом с помощью array_rand() выбрать случайный элемент и подставить нужный запрос | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 21:19)
| | Я считаю колличество строк. К примеру получилось 3 строки и случайное число сгенерилось равным 3, а строки с таким id в таблице нет, поэтому нужно чтобы строки шли попорядку. | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:24)
| | как я понял, ты потом при выборке задаёшь условие "где id = такому то числу"? ну и зачем?
первичный ключ не для этого | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 21:29)
| | Да именно так делаю, а можно это сделать подругому?
Если ключ нужен не для этого, зачем он вообще нужен? | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 21:35)
| | первичный ключ устанавливает уникальность записи, например, когда ты входишь на этот форум, тебе же не пишется вверху сайта "привет Вася", а пишется твой логин и только твой.
ну это так, к примеру.
вот же тебе дали очередной вариант решения задачи
>Тогда вначале вынуть все id:
>select `id` from table
>потом с помощью array_rand() выбрать случайный элемент и подставить нужный запрос
p.s. вот здесь http://www.softtime.ru/forum/index.php?id_forum=3 ты всё найдёшь | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 21:50)
| | Голову сломал, как вынуть все id (select `id` from table) через какую функцию? | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 22:27)
| | ну а как ты вообще выводишь записи с таблицы?
ещё раз напоминаю http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 22:34)
| | Записи из таблицы вывожу через цикл, а чтобы извлечь все id ни разу не сталкивался
Вот написал. Код не работает, уже всякие функции перебрал
Подскажите, пожалуйста где ошибка?
<?php
require_once('connect.php');
$_A=mysql_query("SELECT id FROM sait");
$_B=mysql_fetch_array($_A);
$_C=array_rand($_B, 1);
echo $_C;
?>
|
| |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 22:48)
| | и чему у тебя равна $_C? | |
|
|
|
|
|
|
|
для: Slo_Nik
(31.10.2009 в 23:18)
| | 0, иногда выходит id | |
|
|
|
|
|
|
|
для: renat
(31.10.2009 в 22:48)
| | Пожалуйста, подскажите что не так в коде, ничего не получается(((
Уже весь форум облазил нигде не нашел | |
|
|
|
|
|
|
|
для: renat
(01.11.2009 в 00:35)
| | 1)если только этот форум, то... тебе же написали где все вопросы по базам данных и т.п.
2) что бы вывести все id(и не тлько), тебе надо применить цикл while.
так ты получишь только одну запись.
3)
<?php
$id = array();
while($id_m = mysql_fetch_array($menu)){
$id[] = $id_m['id'];
}
$index = rand(0, count($id) -1);
echo $id[$index];
?>
попробуй, но только свои переменные поставь.
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(01.11.2009 в 00:53)
| | Такой способ тоже долгий 2 сек. считает | |
|
|
|