Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Первичный ключ
 
 автор: renat   (31.10.2009 в 21:04)   письмо автору
 
 

Вот такая проблема:

Есть таблица данных mysql, в которой некоторые первичные ключи отсутствуют.
Как можно оптимизировать таблицу, чтобы снова был порядок в ключах, чтобы не было такого, что некоторых строк нет?

К примеру:

после удаления пропала строка с ключом 3:

1 - текст
2 - текст
4 - текст

теперь нужно поменять первичные ключи чтобы получилось:

1 - текст
2 - текст
3 - текст

Как это сделать?

  Ответить  
 
 автор: Trianon   (31.10.2009 в 21:07)   письмо автору
 
   для: renat   (31.10.2009 в 21:04)
 

Никак.
Первичный ключ - это совсем не то что Вы решили.

И Вы ошиблись с разделом.
Поищите в разделе MySQL - там каждая десятая тема такая.

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 21:10)   письмо автору
 
   для: renat   (31.10.2009 в 21:04)
 

а зачем что бы ключ шёл по порядку?

  Ответить  
 
 автор: renat   (31.10.2009 в 21:14)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 21:10)
 

Мне нужно сгенерить случайную строку.
Когда нет строки с каким либо ключом, у меня присходит ошибка.

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 21:19)   письмо автору
 
   для: renat   (31.10.2009 в 21:14)
 

посчитай кол-во строк и исходи из этого, а первичный ключ оставь в покое.

  Ответить  
 
 автор: ChieFSS   (31.10.2009 в 21:22)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 21:19)
 

select * from TABLE order by rand() limit 1
и не надо ничё счетать :)

  Ответить  
 
 автор: renat   (31.10.2009 в 21:25)   письмо автору
 
   для: ChieFSS   (31.10.2009 в 21:22)
 

У меня миллион записей, такой способ работает у меня 15 сек. Это долго

  Ответить  
 
 автор: ChieFSS   (31.10.2009 в 21:28)   письмо автору
 
   для: renat   (31.10.2009 в 21:25)
 

Тогда вначале вынуть все id:
select `id` from table
потом с помощью array_rand() выбрать случайный элемент и подставить нужный запрос

  Ответить  
 
 автор: renat   (31.10.2009 в 21:24)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 21:19)
 

Я считаю колличество строк. К примеру получилось 3 строки и случайное число сгенерилось равным 3, а строки с таким id в таблице нет, поэтому нужно чтобы строки шли попорядку.

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 21:29)   письмо автору
 
   для: renat   (31.10.2009 в 21:24)
 

как я понял, ты потом при выборке задаёшь условие "где id = такому то числу"? ну и зачем?
первичный ключ не для этого

  Ответить  
 
 автор: renat   (31.10.2009 в 21:35)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 21:29)
 

Да именно так делаю, а можно это сделать подругому?
Если ключ нужен не для этого, зачем он вообще нужен?

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 21:50)   письмо автору
 
   для: 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 ты всё найдёшь

  Ответить  
 
 автор: renat   (31.10.2009 в 22:27)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 21:50)
 

Голову сломал, как вынуть все id (select `id` from table) через какую функцию?

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 22:34)   письмо автору
 
   для: renat   (31.10.2009 в 22:27)
 

ну а как ты вообще выводишь записи с таблицы?

ещё раз напоминаю http://www.softtime.ru/forum/index.php?id_forum=3

  Ответить  
 
 автор: renat   (31.10.2009 в 22:48)   письмо автору
 
   для: 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($_B1);

echo 
$_C;

?>

  Ответить  
 
 автор: Slo_Nik   (31.10.2009 в 23:18)   письмо автору
 
   для: renat   (31.10.2009 в 22:48)
 

и чему у тебя равна $_C?

  Ответить  
 
 автор: renat   (31.10.2009 в 23:27)   письмо автору
 
   для: Slo_Nik   (31.10.2009 в 23:18)
 

0, иногда выходит id

  Ответить  
 
 автор: renat   (01.11.2009 в 00:35)   письмо автору
 
   для: renat   (31.10.2009 в 22:48)
 

Пожалуйста, подскажите что не так в коде, ничего не получается(((
Уже весь форум облазил нигде не нашел

  Ответить  
 
 автор: Slo_Nik   (01.11.2009 в 00:53)   письмо автору
 
   для: 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(0count($id) -1);
echo 
$id[$index];
?>
попробуй, но только свои переменные поставь.

  Ответить  
 
 автор: renat   (01.11.2009 в 15:07)   письмо автору
 
   для: Slo_Nik   (01.11.2009 в 00:53)
 

Такой способ тоже долгий 2 сек. считает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования