[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Ночи доброй! Импортирую большой дамп бд mysql,возникает ошибка при импорте 6-ой или 7-ой таблицы в бд #1273 OUKNOWN COLLATION ''.Бд весит больше 600 мб,пока просмотреть структуру проблематично.Кто уже сталкивался с подобной проблемой и нашёл ли методы её решения ? Спасибо.
     
  2. Welemir

    Welemir Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    229
    Likes Received:
    11
    Reputations:
    -4
    Так,походу в таблице была не указана коллация.Тогда другой вопрос - Как убрать FATAL ERROR при приближении временного импорта базы данных ? (там ограничение в 300 секунд).Заранее благодарен :).Выставил 800 секунд,проверил директиву max_execution_time - она равно 800.Перезагрузил сервер.так в чем проблема ?
     
    #1202 Welemir, 10 Aug 2010
    Last edited: 10 Aug 2010
  3. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    Есть две таблицы:
    Первая содержит в себе записи об собеседовании (имя, вакансия(вакансии только из второй таблицы)):
    ID | Имя | Вакансия | Стуст
    Колонка статус это bit колонка со значения True - False
    Вторая содержит непосредственно список доступных вакансий и выглядит так:
    ID | Должность

    Нужно получить выборку вида
    Должность | количество открытых (True в Статус) собеседования на должность

    т.е. вывести поля второй таблицы и для каждого поля должно быть подсчитано сколько раз это поле задействовано в первой таблице. С sql почти не знаком, не знаю как сделать одним запросом. А делать два запроса а потом просто перебирать и вручную подсчитывать не хочется.

    Code:
    SELECT     date, post,
                              (SELECT     COUNT(vacancy) AS Expr1
                                FROM          interview
                                WHERE      (vacancy = vacancy.post) AND (status = 1)) AS Expr1
    FROM         vacancy
    
    воля и труд... мазоли на трут.
     
    #1203 cupper, 13 Aug 2010
    Last edited: 13 Aug 2010
  4. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Здравствуйте, есть таблица с следующими полями:

    id cat date

    хочу вывести из каждой категории по одной последней записи, делаю такой запрос:

    Code:
    SELECT `id`,`cat`,`date` FROM `table_test` GROUP BY `cat` ORDER BY `date` DESC
    Но почему то выодит не так как нужно, выводит по одной записи, но они не последние...

    Вот скриншот того как нужно вывести (выделено оранжевым):

    [​IMG]

    А вот скриншот того как выводит мой sql запрос (неправильно):

    [​IMG]

    Помогите, пожалуйста, составить правильный SQL запрос..
     
  5. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Необходима помощь, есть две таблицы:

    Первая с комментариями к теме
    [​IMG]
    где столбец id_post это id темы из 2й таблицы.

    Вторая с темами
    [​IMG]

    Необходимо, чтобы темы выводились в порядке новых комментарий, как на форумах..
    Тоесть, чтобы сначала выводилась последняя созданная тема 5 без комментариев. потом 4, 1, 3, 2.
    [​IMG]
     
  6. FewG

    FewG Member

    Joined:
    25 Dec 2009
    Messages:
    136
    Likes Received:
    12
    Reputations:
    0
    Есть в бд много записей в виде "15781054" в порядке увеличения (+1). Можно ли изменить у всех записей начальные цифры к примеру с 15 на 31?

    Тестил - UPDATE table SET value ="31%" where charId LIKE "15%"; Не работало, как и думал.
     
    #1206 FewG, 27 Aug 2010
    Last edited: 27 Aug 2010
  7. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Например, так

    Code:
    UPDATE table SET charId = concat('31', substr(charId, 2)) WHERE charId LIKE '15%'
    Если charId стоит в диапозоне, думаю лучше искать с помощью lt и gt
     
  8. QtQDuck

    QtQDuck Member

    Joined:
    1 Aug 2007
    Messages:
    67
    Likes Received:
    10
    Reputations:
    0
    Столкнулся с такой проблемой:

    При запуске одной программы(обращается к БД), выводит ошибку "Пользователю "sa" не удалось войти в систему". Сайт тоже не может подключиться.

    Версия ОС: Windows 2003
    Версия СУБД: MSSQL 2005
    Аутентификация: Mixed
    TCP\IP: Enabled
    FireWall: Disabled

    Ставил MSSQL 2000 - аналогичная проблема.
    Прошу помочь. Спасибо.
     
  9. Anarh1st

    Anarh1st Member

    Joined:
    19 May 2010
    Messages:
    32
    Likes Received:
    5
    Reputations:
    0
    Подскажите программу для работы с sql-файлами, нужно конкретный столбец вытащить, спасибо.
     
  10. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как в MySQL (Тип таблицы: MyISAM) хранить одну таблицу в нескольких файлах, т.е. когда первый файл (или индекс файл) набирают вес 100мб, создаются 2 новых файла сама таблица и индекс
     
  11. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Подскажите плз с запросом. есть таблица, с примерно таким содержанием:
    (ID - понятно, статус - вкл\выкл)
    Code:
    id  status  
    1     1 
    1     0
    1     1
    2     1
    2     0
    2     0
    2     0
    Нужно вывести уникальные значения для ID, и посчитать сколько для каждого ID включено\выключено, чтобы на выходе получилось примерно так:

    Code:
    id   on   off 
    1     2     1
    2     1     3
    
     
  12. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    Code:
    mysql> SELECT * FROM `q`;
    +------+--------+
    | id   | status |
    +------+--------+
    |    1 |      1 | 
    |    1 |      0 | 
    |    1 |      1 | 
    |    2 |      1 | 
    |    2 |      0 | 
    |    2 |      0 | 
    |    2 |      0 | 
    +------+--------+
    7 rows in set (0.00 sec)
    
    mysql> select distinct `id` as `cid`,(select count(*) from `q` where `status`=1 and `id`=`cid`)as `on`,(select count(*) from `q` where `status`=0 and `id`=`cid`)as `off` from `q`;
    +------+------+------+
    | cid  | on   | off  |
    +------+------+------+
    |    1 |    2 |    1 | 
    |    2 |    1 |    3 | 
    +------+------+------+
    2 rows in set (0.00 sec)
    
     
  13. Blizzard

    Blizzard Member

    Joined:
    27 Jul 2010
    Messages:
    16
    Likes Received:
    16
    Reputations:
    0
    SELECT id, sum(status), count(status)-sum(status) FROM `anti` where 1 group by id
     
  14. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Здрасьте, что за лабудень, при попытке выполнить запрос:

    PHP:
    $login trim($_POST['login']);

    $login mysql_real_escape_string($login);

    $req mysql_query("SELECT `salt` FROM `users` WHERE `login`=$login LIMIT 1")  or die(mysql_error());
    if (
    mysql_num_rows($req) == 1) {
            
    $row mysql_fetch_assoc($req);
            
    $salt $row['salt'];
        }
    echo 
    $salt;
    var_dump выдает bool(false), но столбец, как и сама таблица естественно существует в БД.

    mysql_error() выдает:

    PHP:
    Unknown column 'Name' in 'where clause'
    Что только не пробовал, ничего не помогает = (
     
  15. OSW

    OSW Elder - Старейшина

    Joined:
    12 Jul 2007
    Messages:
    325
    Likes Received:
    56
    Reputations:
    7
    $login = trim($_POST['login']);

    $login = mysql_real_escape_string($login);

    $req = mysql_query("SELECT `salt` FROM `users` WHERE `login`LIKE '$login' LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($req) == 1) {
    while ($row = mysql_fetch_assoc($req)) {
    $salt = $row['salt'];
    echo $salt;
    } }
    else {
    echo "Ошибка";
    }
     
    #1215 OSW, 17 Sep 2010
    Last edited: 17 Sep 2010
  16. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    OSW
    Зачем ты переписал на LIKE ? Теперь при запросе в БД Alex выведет стопицот Алексов с приставками типа Alex007, Alexbest и тд.

    PHP:
    $req mysql_query("SELECT `salt` FROM `users` WHERE `login`= '$login';")  or die(mysql_error());
     
  17. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    b3, спасибо вам, соль достать удалось из БД, но есть вопросы, почему вы убрали:

    LIMIT 1

    Значение кавычек теперь понял, все переменные следует заключать в запросе в одинарные кавычки. Или я ошибаюсь?
    PHP:
    $reqs mysql_query("SELECT `salt` FROM `users` WHERE `login`= '$login' LIMIT 1") or die(mysql_error());
     
  18. OSW

    OSW Elder - Старейшина

    Joined:
    12 Jul 2007
    Messages:
    325
    Likes Received:
    56
    Reputations:
    7
    Точно :) Тупанул.
     
  19. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    http://www.php.ru/forum/viewtopic.php?t=21561&start=0&postdays=0&postorder=asc&highlight=&sid=07d124909486a41b41a0184364a7e098
     
  20. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Я что то вообще перестал соображать.. просто не могу понять как они сливаються. Вот хочу что бы мне кто то разьяснил тогда бы я думаю смог это сделать в том месте где мне нужно

    Code:
    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    mysql_select_db("dbsite", $con);
    
    $result = mysql_query("SELECT * FROM baza_ads WHERE subcatid = 5");
    
    while($row = mysql_fetch_array($result))
      {
      echo $row['title'] . "<br><br>" . $row['description'];
      echo "<br />";
      }
    
    mysql_close($con);
    ?> 
    
    Вот мне выдит результат -

    subcatid: 5
    title : Привет всем
    description : Всем большого здоровья

    У меня в той же таблице baza_ads есть еще записи только с другим SUBCATID.

    К примеру это будет SUBCATID : 8


    Вопрос.

    Как вывести записи TITLE and Description где SUBCATID = 5 , SUBCATID =8


    Я когда читал про JOIN я так понял он обьединяет таблицы а не столбцы.. вообщем не чего у меня не выходит. Но я пытаюсь.

    Кто может подскажите как это сделать
     
Thread Status:
Not open for further replies.