• Как правильно организовать внешние ключи в MySQL?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    При создании таблицы:

    CREATE TABLE comments(
    id_comment INT(255) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    comment TEXT not null,
    id_people int(8) unsigned not null,
    foreign key(id_people) references peoples(people_id) on update cascade on delete cascade);


    Ну или как товарищ выше предложил.

    ЗЫ Не путаетесь в таких наименованиях? First, Middle, Last name не лучше? )
    Ответ написан
    Комментировать
  • Как сформулировать по грамотнее if в mysql?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Перестаньте пользоваться mysql_query. MySQLI либо PDO

    И объясните пожалуйста суть того что вы делаете. Давать советы по манипуляциям с бд без понимания данных - крайне хреновая идея
    Ответ написан
    Комментировать
  • Как обрезать строку после первого пробела?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    var pos = str.indexOf(' ');
    var str = (pos > 0) ? str.substr(0, pos) : str;


    $str=substr($str, 0, strcspn($str, ' '));
    Ответ написан
    Комментировать
  • Как оптимизировать простой запрос select * from table?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Во первых забудьте вобще что бывает * это bad practice

    Покажите индексы на таблице и желательно create_table
    Ответ написан
  • Как написать скрипт, который будет делать ajax запросы на вики?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    а в чем конкретно проблема? статей по ajax в инете вагон, если хотите свое, ну или jquery ajax
    Ответ написан
  • Правильный метод синхронизации нескольких таблиц двух БД Oracle?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Есть еще другой вариант, вставлять таблицы по инициативе мастер-бд при помощи after insert триггера.
    Ответ написан
  • Как с помощью sql создать сводную таблицу в mysql? (pivot table mysql)?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    еще вариант:
    select tovar_id,
       group_concat(price_id order by price_id asс separator ',') as price_ids,
       group_concat(price order by price_id asс separator ',') as prices
    from prices group by tovar_id


    И разобрать уже в приложении
    Ответ написан
  • Не уходит нагрузка после перезапуска mysql, почему?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Подключаете к MySQL
    mysql -u USER -pPASS -P PORT -h HOST
    и затем спрашиваете его, чем же он там занят
    show processlist
    Ответ написан
    Комментировать
  • Как сделать растущие графики на javascript?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Ответ написан
    Комментировать
  • В чем ошибка при создании таблицы в БД?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    MySQL намекает, что не нуно пытаться создать пустую таблицу
    Ответ написан
    Комментировать
  • Как сверстать этот блок комментариев?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    А в чем конкретно проблема?

    <h2>Коментарии</h2>
    <ul>
      <li><span class="time"></span><h3></h3><p></p></li>
    </ul>
    <div>итд</div>

    Ну и со стилями поколдовать
    Вы начните, попробуйте, потом выложите свои наработки и напишите, что именно не получилось
    Ответ написан
  • Стоит ли использовать значение NULL в MYSQL-таблице?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    В Null нет ничего плохого, сделайте alter и пусть будут поля с нулом по дефолту, нереальное дефолтное значение ставить незачем.
    Ответ написан
  • На что нужно обратить внимание при миграции с MySQL на PosgreSQL?

    Kwisatz
    @Kwisatz Автор вопроса
    Больше web-приложений, хороших и разных
    эээх, сам спросил сам ответил)

    Итак, на что собственно нужно обратить внимание:
    MySQL
    - поменять date_format(now() '%d.%m.%Y'); to_char( now(), 'DD.MM.YYYY' );
    - если нужно использовать unix_timestamp() (я ее использую для передаче dateDiff функции в PHP), то пишем:
    CREATE OR REPLACE FUNCTION unix_timestamp(timestamp without time zone)
      RETURNS integer AS
    $BODY$
    SELECT date_part('epoch', $1::timestamp)::INTEGER AS RESULT
    $BODY$
      LANGUAGE sql VOLATILE
      COST 100;

    - убрать все хаки производительности в запросах. Без глубочайшего знания PosgreSQL это все бесполезно. Сколько я ни экспериментировал, оптимизатор postgre оказывался умнее, хотя с MySQl у меня таких проблем нет.
    - убрать всевозможные указания на использования индексов итд
    - изучить типы данных postgre, ибо таблицы все придется переносить очень внимательно. Тот же some_id int(10) unsigned not null auto_increment превращается в some_id serial
    - ну и листать на досуге документацию, ибо MySQL по сравнению с Posgre есть жуть недоразвитая.

    PHP
    - тут надо бы написать свою обертку вокруг pg_prepare и прочих функций, я себе сделал наподобие той, что у меня была для MySQL, но пока еще не все нюансы вылизал.
    - Учесть, что prepared запросы postgre хранит на соединение, это нужно учитывать, иначе pg_prepare кидает ошибку. Я себе сваял нечто, вроде:
    private static function getPrepared()
        {
        $result=pg_query(self::$pgConn, 'SELECT name FROM pg_prepared_statements');
        while ($data=pg_fetch_object($result))
          {
          self::$prepareds[(string)$data->name]=1;
          }
        }


    PostgreSQL
    - сразу как только загрузите бд 1с, лучше выполнить analyze по всем таблицам
    - затюнить бд, методом правки конфига
    - Если будете использовать View на таблицы 1с (я их создаю пачками, ибо работать с document132._field1439_rref Нет никакого желания), то создавайте их в отдельной схеме и дропайте ее перед внесением серьезных изменений в конфигурацию (и не забываем про бекапы). При внесении серьезных изменений, скажем добавление реквизита, 1с попытается дропнуть таблицу (да-да, они не знают что такое alter), но при наличии на этой таблице зависимостей, выдаст критическую ошибку. При такой ошибке ни в коем случае нельзя закрывать конфигуратор, можно просто убрать зависимости и нажать обновить еще разок. Если закрыли конфигуратор то вам предстоит весьма увлекательный квест (хотя вариантов решения проблемы есть 2.5).
    - Аналогично нужно помнить о триггерах и собственных индексах на таблицах, они не помешают 1с дропнуть таблицу, но сами естественно умрут вместе с ней.


    У 1с начиная с версии 8.2.какойтотам есть механизм подключения к внешним источникам данных. В 8.3 с ними даже можно работать на запись и модификацию довольно нативно, а так же использовать функции. Огромный плюс в том, что подцепив таблицу с нужным перечнем полей, можно использовать все это дело как реквизит во всех элементах конфигурации, а так же использовать в запросах. Единственный баг, который я наблюдаю и у 8.2 и у 8.3: соединение с бд то есть постоянное, то выдает окно подключения, то подвисает на нем. Решение:
    //mydb - имя источника данных заданное в 1с
    Параметры = ВнешниеИсточникиДанных.mydb.ПолучитьОбщиеПараметрыСоединения();
    Параметры.АутентификацияСтандартная = Истина;
    Параметры.ИмяПользователя = "user";
    Параметры.Пароль = "password";
    Параметры.СтрокаСоединения = "DRIVER={PostgreSQL Unicode(x64)};SERVER=127.0.0.1;port=5432;UID=user;PWD=password;DATABASE=somedb";
    Параметры.СУБД = "PostgreSQL";
    
    ВнешниеИсточникиДанных.mydb.УстановитьОбщиеПараметрыСоединения(Параметры);
    ВнешниеИсточникиДанных.mydb.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(), Параметры);
    ВнешниеИсточникиДанных.mydb.УстановитьПараметрыСоединенияСеанса(Параметры);
    
    ВнешниеИсточникиДанных.mydb.УстановитьСоединение();


    Ну вот вроде все, что пока вспомнил 8)
    Ответ написан
    Комментировать
  • Как изменить класс по id?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    document.QuerySelector('#item').classList.remove('className');
    Ответ написан
  • Почему не выполняется запрос mysqli?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Потому, что вы подготовили результирующий набор но не использовали. Перед следующим запросом поставьте free_result()
    Ответ написан
    1 комментарий
  • Как лучше поставить обработчики после подгрузки AJAX-ом?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    попробуйте поставить на body. Если вам этого будет хватать, то почему нет? Если будет не хватать, разнесете уже в процессе. У меня на body стоят всевозможные универсальные штуки, но иногда есть желание вызвать обработчик до того как событие всплывет до body. Тут два варианта, либо в разметке onClick и т д Либо анализировать вставляемый контент. У меня так развешиваются обработчики для хитрых динамических графиков и таблиц.

    Вот пример взял посложнее, я использую этот статический класс для регистрации обработчиков и последующего вызова, вот он примерно(взяты кускт двух разных классов):
    ajax.answerParse=function()
      {
      if ((this.target) && (this.answer.html!==null))
        {
        this.target.innerHTML=this.answer.html;
        //experimental
        contentHandlers.placeAll(this.target);
        }     
      }
    contentHandlers.placeAll=function(targetObj)
      {
      for (var i=0, len=this.collection.length; i<len; i++) 
        {
        this.placeCurrent(targetObj, this.collection[i]);
        }
      }
    contentHandlers.placeCurrent=function(targetObj, handlerObj)
      {  
      var handlerTargets=targetObj.querySelectorAll(handlerObj.selector);
      for (var i=0,len=handlerTargets.length; i<len; i++)
        {
        if (handlerObj.event)
          {
          handlerTargets[i].addEventListener(handlerObj.event, handlerObj.handler.bind(handlerObj, handlerTargets[i]));
          }
        else
          {
          handlerObj.handler.call(handlerObj, handlerTargets[i]);
          }
        }
      }
    Ответ написан
    2 комментария
  • Как правильно использовать UTF-8 в PostgreSQL?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Покажите create script для БД
    Должно быть нечто такое:
    CREATE DATABASE "somedb"
      WITH OWNER = "someuser"
           ENCODING = 'UTF8'
           TABLESPACE = pg_default
           LC_COLLATE = 'Russian_Russia'
           LC_CTYPE = 'Russian_Russia'
           CONNECTION LIMIT = -1;


    Если оно так и ошибка сохраняется то это признак того, что ваше приложение передает SQL запрос не в utf-8.
    Ответ написан
  • Как сделать выборку строк с наименьшей ценой, сгруппированных по полю и после отсортировать по дате?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Для начала добавляем полы даты
    alter table tour_table add departure_date date not null;

    Затем скриптом берем ваш варчар и заталкивает в поле departure_date в формате YYYY-MM-DD
    Что есть минимальные предложения? Если просто сортировка по цене, тогда
    select some_field from from tour_table where country='Вьетнам' order by price asc,departure_date desc

    Если нужна цена по определенному попрогу, то
    select some_field from from tour_table where country='Вьетнам' and price<=100000 order by price asc,departure_date desc

    Поле даты нужно переформатировать обязательно, в текущем виде сортировка по варчару не даст того что вы хотите, можно сделать процедуру или при загрузке правильно дату втыкать.
    Кстати, запрос видимо будете делать часто, посему советую добавить индекс:
    alter table tour_table add key main_key(country, price, departure_date)
    Ответ написан
    Комментировать