Удаление, вставка записей в таблиу ( mySQL+PHP )

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Мои корявки добрались до sql, и в процессе столкнулся с такой штукой, к примеру удаляю я запись (строку), а следующая вставка новой записи происходит на тоже место..
Собственно как обойти данный аспект.???

Код: Выделить всё

Удаляю так
mysql_query("delete from strukture where ssilka_name='$ssilka_name' and ssilka_nazvanie='$ssilka_nazvanie' and id_tovarov='$id_tovarov'") or die ("Error: 666.");

добовляю так
mysql_query("insert into strukture values ('$ssilka_name', '$ssilka_nazvanie','$id_tovarov')") or die ("Error: 777.");
И второе не допру как обратиться к конкретному столбцу в таблице, допустим я хочу считать во второй строке последний столбец ( id_tovarov ) 2 перезаписать только его..

Выглядит все так

Код: Выделить всё

CREATE TABLE strukture (
  ssilka_name varchar(20) NOT NULL default '',
  ssilka_nazvanie varchar(30) NOT NULL default '',
  id_tovarov text,
  PRIMARY KEY  (ssilka_name)
) TYPE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO strukture VALUES ('menu1', 'меню 1', '1,2,3');
INSERT INTO strukture VALUES ('menu2', 'меню 2, '4,5,6');
INSERT INTO strukture VALUES ('menu3', 'меню 3', '7,8,9');
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

По первому пункту ничего не понял. Что вы подразумеваете под термином рэп или йо? Т.е. под тем же местом?
По второму пункту всё очень просто - есть такой вид запроса, как update. Выглядеть будет примено так:

Код: Выделить всё

update strukture set id_tovarov ="new value" where ssilka_name ="menu2"
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

2 понятно, спасибо..

По первому пункту я хочу удалить строку из таблицы, и при добавлении новой записи она вставляется в то же место что занимала удаленная, это конечно местами прикольно, но я хочу вообще удалить, дабы вставка шла в конец таблицы..

И доп вопрос как перемещать строки, к примеру хочу 3 строку переместить на первое место?
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

По первому пункту я хочу удалить строку из таблицы, и при добавлении новой записи она вставляется в то же место что занимала удаленная, это конечно местами прикольно, но я хочу вообще удалить, дабы вставка шла в конец таблицы..

И доп вопрос как перемещать строки, к примеру хочу 3 строку переместить на первое место?
В SQL нету такого понятия как номер строки - учите матчасть. Можно только управлять порядком, в котором строки выводятся с помошью order by.
2B OR NOT(2B) = FF
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Я иммел ввиду 3 строку в моем примере, order by не нашел инфы.. Absurd плохой ответ лучше вовсе не отвечать нежели так..

Вернемся к баранам, я задал индефикатор тобишь доп пораметр к записи в котором хранится номер вывода и в принцыпе проблема решена, но вот мучает вопрос при delete удаляются записи в столбцах строки, но не сама строка и при пересчете у нас остаются пустые строки..
Вопрос есть ли способ удалить строку и какой если есть....
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Я иммел ввиду 3 строку в моем примере, order by не нашел инфы.. Absurd плохой ответ лучше вовсе не отвечать нежели так..
Нету никаких "номеров строк" в SQL. Insert вставляет данные на первое свободное место. Например, создал ты таблицу со 100 строчками, затем удалил 50. Появилось 50 дырок в таблице, и следующий insert вставит данные в первую же подходящую по размеру дырку, чтобы не увеличивать таблицу.
Программисту вообще должно быть без разницы, в каком порядке лежат строки в таблице - файлы например тоже лежат в физических секторах, разбросанных по блинам HDD и никого это не тяготит.
2B OR NOT(2B) = FF
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Еще раз я это знаю и понимаю,.. в структуре корорую я привел выше 3 записи я вертуально пронумеровывал их....
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Duncon, ты зря бычишься. Ты их виртуально перенумеровал, а SQL их вывел в виртуальном порядке. Это в любой доке написано, что порядок выдачи select'а не определён до тех пор, пока ты не попросишь отсортировать выдачу по конкретному полю. В твоём случае должно быть что-то вроде этого:
[syntax:fd0729b7a1="sql"]select * from strukture order by virtual_number[/syntax:fd0729b7a1]
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Вот уже лучше, из этого ответа я понимаю что ORDER BY сортировка, спасибо сей час попробуем, я этот порядковый номер ввел, но пошел другим путем пересчитывал все "строки" (пустые тоже попадали в общую сумму) а потом циклил и выводил результат. И самое интересное что при прочтении литературы ORDER BY был описан как метод отбора...
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

пустые тоже попадали в общую сумму
Сдаётся мне, что что-то здесь не так :)
Даже самый дурацкий замысел можно воплотить мастерски
Ответить