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

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

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

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    если быть точным то так))
    UPDATE vote SET ip='$REMOTE_ADDR'
     
  2. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Угу, молодец. Так великие знатоки и херят всю таблицу :) Условие не забываем.
     
  3. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    у него в римере не было условия, вот и не написал =)
     
  4. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Есть вопросы:
    1. Select * from test where not id=4
    что выведет?
    У меня выводит все записи у которых ид не 4, в книги же написано что ничего не должно выводить так как сервер райэсйьюэл оценивает выражение нот ид а затем проверяет соответствует ли оно 4,поскольку ид всегда не 0 то нот ид всегда равно 0 и не равно 4,следовательно бд ниче не выдаст. Я хз ваще! Мозг взорвался. У меня результат с ид 1,2,3,5,6 а у них пустой! И с нот ваще пипец! В книге одно у меня другое. У мну версия 5.0.45.
     
    2 people like this.
  5. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    ибо здесь двоякая ситуация => разные версия мускуля по разному реагируют

    Code:
    [B]NOT, ![/B]
    Logical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is non-zero, and NOT NULL returns NULL. 
    т.е.
    Code:
    mysql> SELECT * FROM test;
    +----+----------+
    | id | num      |
    +----+----------+
    |  1 |      148 |
    |  2 | 68767867 |
    +----+----------+
    2 rows in set (0.00 sec)
    
    Code:
    mysql> SELECT * FROM test WHERE NOT(id)=null;
    Empty set (0.00 sec)
    
    mysql> SELECT * FROM test WHERE !(id)=null;
    Empty set (0.00 sec)
    
    Code:
    mysql> SELECT * FROM test WHERE NOT(id)=false;
    +----+----------+
    | id | num      |
    +----+----------+
    |  1 |      148 |
    |  2 | 68767867 |
    +----+----------+
    2 rows in set (0.00 sec)
    
    mysql> SELECT * FROM test WHERE !(id)=false;
    +----+----------+
    | id | num      |
    +----+----------+
    |  1 |      148 |
    |  2 | 68767867 |
    +----+----------+
    2 rows in set (0.00 sec)
    
    Code:
    mysql> SELECT * FROM test WHERE NOT(id)=true;
    +----+----------+
    | id | num      |
    +----+----------+
    |  2 | 68767867 |
    +----+----------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM test WHERE !(id)=true
    Empty set (0.00 sec)
    
    Вывод:
    WHERE NOT id=2 интерпретируется как id!=2
    WHERE ! id=2 интерпретируется как !(id=2)

    p.s. моя версия - 5.1.35
     
    #685 FireFenix, 27 Jul 2009
    Last edited: 27 Jul 2009
  6. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Спасибо! Мутное всеже дело. Как можно от версии к версии так глобальна менять действия операторов!
     
    #686 Krist_ALL, 27 Jul 2009
    Last edited: 27 Jul 2009
  7. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Делаю запрос селект наме фром а1 иннер джоин а2 юзе (ид)
    в обоих таблицах есть колонка наме и бд орет.Как тада быть?


    2. Установил мускул,пишет ошибка юзинг пас но. Ключ -u root и хз. Непускает(
     
    #687 Krist_ALL, 28 Jul 2009
    Last edited: 28 Jul 2009
  8. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Как удалить из MySQL дубликаты?
     
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну самое изящное, что я видел:
    Code:
    ALTER IGNORE TABLE table ADD UNIQUE INDEX (field)
    
     
  10. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Какая ширина типа будет,если в скобках не указывать ее при создании таблицы? Create table (a int unsigned)
     
    1 person likes this.
  11. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Есть две таблицы: `geo_cities` и `puppy_listings`.
    В первой таблице - список городов, во второй - объявления (титл, текст, city_id города согласно таблице `geo_cities`).
    Как вывести список только тех городов, city_id которых есть в объявлениях?
    Т.е. нужен запрос наподобие как-то так:
    "SELECT * FROM `geo_cities` WHERE `geo_cities`.city_id == (`puppy_listings`.city_id для любой строчки таблицы `puppy_listings`) ORDER BY city_name ASC"
    Реально ли сделать так?
     
  12. omfg

    omfg Member

    Joined:
    3 Aug 2009
    Messages:
    25
    Likes Received:
    5
    Reputations:
    0
    Ты же сам ответил на свой вопрос :) как-то так
    Code:
    SELECT geo_cities.id FROM geo_cities , puppy_listings WHERE geo_cities.city_id = puppy_listings.city_id ORDER BY geo_cities.city_name ASC
    
     
    #692 omfg, 4 Aug 2009
    Last edited: 4 Aug 2009
  13. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    О как :D интересная тема...
     
  14. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Нее, не катит.. сделал так, но вот беда: он выводит в списке название города (geo_cities.city_name) столько раз, сколько его geo_cities.city_id упоминается в объявлениях (т.е. в таблице puppy_listings).. что же, если решения на sql нет, попробую в php убрать повторяющиеся элементы :)
     
  15. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    SELECT distinct geo_cities.id FROM geo_cities, puppy_listings WHERE geo_cities.city_id = puppy_listings.city_id ORDER BY geo_cities.city_name ASC

    distinct устранит дубликаты в выводе
     
    1 person likes this.
  16. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    ёпт, давно изобрели GROUP BY
    Code:
      SELECT geo_cities.*
        FROM geo_cities, puppy_listings 
       WHERE geo_cities.city_id = puppy_listings.city_id 
    GROUP BY geo_cities.city_name
    ORDER BY geo_cities.city_name ASC
    
     
  17. WAYS

    WAYS New Member

    Joined:
    12 Nov 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Что оно дает?
     
  18. -JC-

    -JC- Member

    Joined:
    10 Mar 2009
    Messages:
    54
    Likes Received:
    18
    Reputations:
    11
    Выводит рез-тат для каждого города.
     
  19. REDz

    REDz New Member

    Joined:
    12 Dec 2008
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    При двух одновременных соединений к одной таблице, последнее соединение обрывается. Ктонить знает параметр такой конфигурации? Потомучто я что-то не нашел...
     
  20. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    вот подробный ман. мне кажется как раз по твоему вопросу. http://msdn.microsoft.com/ru-ru/library/ms187030.aspx
     
Thread Status:
Not open for further replies.