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

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

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

    Denssss New Member

    Joined:
    25 Oct 2008
    Messages:
    24
    Likes Received:
    2
    Reputations:
    0
    $base_name="base.spacenet.ru:4041";
    $base_user="w_ftown";
    $base_pass="vz4rkuBJ3p";
    $db_name="w-ftown";

    $db_name - это имя базы данных
    юзер,пасс- понятно.
    а что тогда $base_name ??
     
  2. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Хост с БД
     
  3. Denssss

    Denssss New Member

    Joined:
    25 Oct 2008
    Messages:
    24
    Likes Received:
    2
    Reputations:
    0
    если я на локалхосте, то так и писать "localhost"?
     
  4. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    localhost
    или
    localhost:3306
    Просто там оно порт просит по ходу у тебя
     
  5. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Нужно удалить записи из 5 таблиц одним запросом. Делаю вот так:
    Code:
    DELETE FROM t1, t2, t3, t4, t5 
    USING table1 AS t1 
    LEFT JOIN table2 AS t2 ON t1.inst_id=t2.inst_id 
    LEFT JOIN table3 AS t3 ON t2.inst_id=t3.inst_id 
    LEFT JOIN table4 AS t4 ON t3.inst_id=t4.inst_id 
    LEFT JOIN table5 AS t5 ON t4.inst_id=t5.inst_id 
    WHERE t1.inst_id = 2
    
    Запрос выполняется без ошибок, но удаление происходит только из table1.
    Что не так?
    Заранее спасибо!
     
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Code:
    DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    
    Or: 
    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    
    http://dev.mysql.com/doc/refman/5.0/en/delete.html
     
    1 person likes this.
  7. xlopchik

    xlopchik New Member

    Joined:
    4 Apr 2010
    Messages:
    33
    Likes Received:
    3
    Reputations:
    0
    Помогите найти прогу для подстановки (sql инекций)
     
  8. PenSpinner

    PenSpinner Member

    Joined:
    9 Dec 2008
    Messages:
    51
    Likes Received:
    5
    Reputations:
    0
    не уверен, что пишу туда, но всё же.

    скрипт считает посещения: (соединение и выбор базы уже выполнены раньше):

    Code:
    $query = "UPDATE info SET visits=visits + 1, lastvisit=CURDATE(), lastvisit_time=CURTIME() WHERE id='$id'";
    mysql_query($query) OR DIE ("MySQL query failed: ".mysql_error());
    mysql_close($sql);
    дело в том, что при обновлении страницы значение 'visits' увеличивается то на 1, то на 2 (не поочерёдно, а радномно, по крайней мере я не заметил закономерности).
    если в даной части скрипта всё верно, буду искть баг где-то ещё...


    АПД: так, закономерность есть: значение увеличивается на 1, через 3-4 секунды ещё на 1, на этом всё. этот запрос в скрипте только один раз, точно
     
    #1168 PenSpinner, 17 Jun 2010
    Last edited: 17 Jun 2010
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ответ: кто-то нажал два раза F5. Мог бы и сам догадаться. Ибо не в коде, не ты не озвучил - есть ли проверка на повторный заход, а если есть - то через какой промежуток времени.

    PS: Ну сам нажми 5 раз F5 на той страничке, где такой код и потом посмотри свою статистику в БД
     
  10. PenSpinner

    PenSpinner Member

    Joined:
    9 Dec 2008
    Messages:
    51
    Likes Received:
    5
    Reputations:
    0
    да нет, дело в том, что эта страничка на локальном веб-сервере, и никто, кроме меня не заходил туда. а я нажимаю ф5 один раз, поверь :)

    вынес этот запрос в один пхп скрипт - пашет нормально...в чём может быть проблема?
     
    #1170 PenSpinner, 18 Jun 2010
    Last edited: 18 Jun 2010
  11. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    собственно
     
  12. PenSpinner

    PenSpinner Member

    Joined:
    9 Dec 2008
    Messages:
    51
    Likes Received:
    5
    Reputations:
    0
    ясно, спасибо, напишу в тему про пхп тогда
     
    #1172 PenSpinner, 18 Jun 2010
    Last edited: 18 Jun 2010
  13. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Есть две таблицы
    в первой столбец:
    Code:
    id
    1
    2
    3
    4
    во второй есть столбец который содержит количество id из первой таблицы:
    Code:
    id_p
    1
    1
    2
    2
    2
    3
    возможно ли както отсортировать столбец id из первой таблицы по количеству из второй id_p
    т.е. чтобы было в такой последовательности 2, 1, 3, 4
     
  14. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    SELECT z1.* FROM table1 z1 
    LEFT JOIN (
      SELECT id_p, COUNT(*) AS cnt
      FROM table2 GROUP BY id_p
    ) z2 ON z1.id = z2.id_p
    ORDER BY z2.cnt DESC;
    
     
    1 person likes this.
  15. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Спасибо работает,
    а можно еще третью таблицу добавить в запрос?
    вот такого вида:
    Code:
    id_r      good     bad
    1          14       8        
    2          25      12
    3          13       6
    4          12      15
    чтобы по id из первой таблицы выбирались данные столбцов good и bad (id_r соответствует id из табл1),
    ну и чтобы также все сортировалось по количеству id_p из второй таблицы :)
     
  16. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Тогда так
    Code:
    SELECT z1.id, IF(ISNULL(z2.cnt), 0, z2.cnt) AS count, z3.good, z3.bad
    FROM table1 z1
    LEFT JOIN (
      SELECT id_p, COUNT(*) AS cnt
      FROM table2 GROUP BY id_p
    ) z2 ON z1.id = z2.id_p
    LEFT JOIN table3 z3 ON z1.id = z3.id_r
    ORDER BY z2.cnt DESC;
    
    Вывод
    Code:
    +------+-------+------+------+
    | id   | count | good | bad  |
    +------+-------+------+------+
    |    2 |     3 |   25 |   12 | 
    |    1 |     2 |   14 |    8 | 
    |    3 |     1 |   13 |    6 | 
    |    4 |     0 |   12 |   15 | 
    +------+-------+------+------+
    
     
  17. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Чтото не выводит, ладно я их на два запроса поделил :)
     
  18. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Запрос рабочий, я перед постом его проверил. Ошибку выдает или что?
     
  19. НTL

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

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    50 столбцов в таблице MySQL (в основном INT(9)) сильно тормозят базу?
     
  20. OdaN

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

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Если они будут просто лежать, то тормозить не будет совсем ^_^
     
Thread Status:
Not open for further replies.