|
|
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Предлагаю открыть новую ветку " MySQL Cook Room " на форуме MySQL. Цель - собрать сборник "рецептов" для решения конкретных задач, связанных именно с особенностями СУБД MySQL. Для более оптимального чтения "рецептов" давайте обсуждение всех вопросов выносить в другие топики дабы не "мусорить". Надеюсь, что это действительно станет полезным топиком для всех. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 00:28:54 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Как получить следующее значение автоинкремента? 1. Средствами MySQL Код: plaintext 1. 2. Функция PHP API - mysql_insert_id(); Полезные ссылки: How to Get the Value of an AUTO_INCREMENT Column PHP mysql_insert_id() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 00:30:32 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Где взять документацию по MySQL? On-line документация: MySQL Manual Off-line документация (в формате *.chm): manual.chm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 00:31:58 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
а на русском нет случайно доков или мануалов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 09:46:18 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Как найти предыдущую и последующие записи в таблице для заданной при условии что последовательность идентификаторов (ID записей) не является непрерывной? Допустим нам требуется по номеру записи вытащить 2 записи, которые будут предшествовать данной, а другая - следовать. Причем в "цепочке" могут быть разрывы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Примечание: возможно это конечно не самый оптимальный вариант, но рабочий :); к сожалению не было возможности протестировать его на "больших" таблицах Где это может быть применимо: Многие наверное видели на сайтах ссылки типа "Предыдущая страница" и "Последующая страница", с помощью которых можно "листать" страницы какого-то раздела на сайте. Например, это может быть фотогалерея. Полезные ссылки: Control Flow Functions (IFNULL) P.S. Версия СУБД MySQL - 4.1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 12:01:02 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Предисловие: данная задачка и ее решение лежат тут Задача: Таблица Т. Два поля D и P. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Требуется вывести записи значения в которых P=1 и предыдущее (по полю D) значение P=0, т.е. должны быть выведены записи за 3.01, 7.01, 9.01 ИМХО, пожалуй самое оригинальное решение данного теста: Код: plaintext P.S. Решение предложил "Владимир Бегун". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 17:27:29 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Berkut Как найти предыдущую и последующие записи в таблице для заданной при условии что последовательность идентификаторов (ID записей) не является непрерывной? Допустим нам требуется по номеру записи вытащить 2 записи, которые будут предшествовать данной, а другая - следовать. Причем в "цепочке" могут быть разрывы. Существует более простое решение. См. команду HANDLER в мануале mysql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 08:50:29 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Начальная задача Выгладываю другой вариант решения, предложенный "sanek842". :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 11:57:56 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, ссылка неверная. Начальная задача ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 12:00:15 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Где взять визуальную утилиту для работы с MySQL (ПО для MySQL)? MySQL Administrator MySQL Query Browser Toad® for MySQL – Preview Release EMS MySQL Control Center :: Partner Solutions Page :: + http://www.google.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2005, 12:19:01 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Как определить рейтинг пяти "лучших" записей в таблице? Иными словами требуется составить список ТОП 5. Цифра 5 в данном случае условна, и вы можете выбирать столько записей сколько душа пожелает. :) Исходные данные: (Предисловие) Код: plaintext Теперь мы хотим определить 5 "лучших" пользователей (по полю vote) в таблице t_1. Если сделать прямо в лоб следующим запросом: Код: plaintext Вроде бы все верно, но есть еще один юзер, у которого vote =1. Код: plaintext Как мне кажется, было бы более правильным включить Joe тоже в список ТОП 5. Потому что, на самом деле, не понятно кто "круче" Joe или Smith (при одинаковых значениях поля vote). Решение: Код: plaintext Таким образом мы включили 6 юзеров, у которых рейтинг выше, чем у других. Примечание: данный запрос должен корректно работать, начиная с версии 4.1. P.S. Алгоритм решения предложил "Sarin" ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2005, 21:24:02 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Berkut Как определить рейтинг пяти "лучших" записей в таблице? Иными словами требуется составить список ТОП 5. Примечание: данный запрос должен корректно работать, начиная с версии 4.1. В более ранних версиях целесообразно воспользоваться средствами клиента (запомнить значени пятой записи данного поля в переменную) и выполнить второй запрос. Пример на делфи с использованием Zeos access: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ЗЫ: можно попробовать пользовательские переменные. Но запросов в любом случае будет 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 00:30:18 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Что делать если не работают вложенные селекты? Данная проблема достаточно хорошо рассмотрена на сайте mysql.com , и предлагаемые решения подходят для большинства случаев в ранних версиях MySQL (ниже 4.1). Поэтому не будем изобретать ничего нового, а просто выложим часть параграфа 1.9.4.1. Единственное, что пожалуй, следует отметить, это то, что под id понимается уникальный ключ (или первичный) таблицы. MySQL manual Вложенные операции выборки реализованы в версии 4.1 . Между тем, во многих случаях можно переписать запрос, чтобы не использовать вложенную выборку. Например, запрос: SELECT * FROM table1 WHERE id IN (SELECT id FROM table2); можно переписать следующим образом: SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id; Запросы: SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2); SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 WHERE table1.id=table2.id); эквивалентны следующему: SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; Для более сложных подзапросов часто можно создать временные таблицы, содержащие данный подзапрос. Иногда, однако, этот способ не годится, чаще всего для команд DELETE, для которых в стандарте SQL не поддерживаются объединения (за исключением вложенных выборок). В этой ситуации возможны два временных (пока вложенные запросы не поддерживаются сервером MySQL) варианта решения проблемы. ... Полезные ссылки: обязательно прочтите MySQL Manual. Вложенные SELECTы . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2005, 00:22:46 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
поклонникам этого треда советую почитать Поля Дюбуа "MySQL Cookbook" Там куча рецептов на все случаи жизни. Англоязычный вариант можно найти online ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 17:18:30 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-поклонникам этого треда советую почитать Поля Дюбуа "MySQL Cookbook" Там куча рецептов на все случаи жизни. Англоязычный вариант можно найти online Англоязычный вариант можно скачать с ftp://custik.org/incoming/books/O'reilly - Mysql Cookbook.chm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 21:50:27 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Как сгенерировать список дат за месяц, которых нет в таблице? Задача: Требуется создать отчет, который будет определять дни месяца, которые не вошли в таблицу. Допустим ваш БОСС, говорит вам: "Я хочу знать как там обстоят дела с продажами товаров за месяц? Определи пожалуйста те дни, в которые мы ничего не продали". Итак Вы понимаете, что вы можете это проделать как-то вручную. Но вдруг так просят делать каждый месяц? Что тогда? Решение: (возможно не самое оптимальное) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Находим те дни, в которые были продажи за месяц. Ясно, что если у нас в таблице содержатся данные по нескольким месяцам, то необходимо добавить условие where ... Рассмотрим простейший случай, когда в таблице содержатся данные за один месяц: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Теперь сгенерим "множество дней месяца". Примечание: 30 - это последний день месяца в данном примере, который можно определить с помощью MySQL. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. Примечание: работает в версии MySQL 4.1. Полезные ссылки: Функции даты и времени в MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2005, 09:17:25 |
|
||
|
MySQL "Cook Room"
|
|||
|---|---|---|---|
|
#18+
Как програмно подключится к MySQL из C++? Как програмно подключится к MySQL из Java? Как програмно подключится к MySQL из Perl? Глава 8. Интерфейсы для MySQL P.S. Конечно данный пост не относится к MySQL "Cook Room", а скорее тянет на FAQ. Но все же решил кинуть линк на мануал, т.к. эти вопросы задаются слишком часто. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 15:00:56 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=654&tid=1853892]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 357ms |

| 0 / 0 |
