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

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

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

    thomass New Member

    Joined:
    4 Nov 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    если он найдет в первом же диапазоне, ему обязательно в остальных искать, м?
    А вот если не найдет в первом, то будет искать в следующем и так до конца. для этого и нужен OR, вам все правильно сказали.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    XopoIII следует отличать русское ИЛИ от OR. OR означает или 1, или 2, или оба сразу. Русское "или" - это XOR, то есть поиск одного из вариантов, исключая другие.

    Читайте про булевы функции


    thomass mysql не будет искать "искать в следующем". Будет сделана выборка всех элементов удовлетворяющих данному условию
     
    _________________________
    1 person likes this.
  3. XopoIII

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

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    Пошел читать, был не прав спасибо.
     
  4. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Есть запрос:
    insert into TABLENAME ....
    Необходимо вместо TABLE_NAME подставить результат select запроса - название таблицы, в котором есть слово word (where table_name like %word%)

    Вопрос - как все этов пихнуть в один запрос?


    The target table of the INSERT statement may appear in the FROM clause of the SELECT part of the query
    Нашел в мануалах, но примера нет ><


    Иными словами - надо вставить в таблицу, название которой like '%name%'


    Code:
    select @aa:=table_name from information_schema.tables where table_name like '%smiles%' ; insert into @aa (id) VALUES (1111)
    в @aa записывается нужное значение, но инсертить в таблицу @aa не кочет :(




    Отобой, сделал:
    Code:
    
    select @a:=table_name from information_schema.tables where table_name like '%smiles%' ;
    set @x:=concat('insert into ', @a,' (id) VALUES (4234234234234324324324324324)');
    Prepare stmt FROM @x;
    Execute stmt;
    
     
    #1304 wildshaman, 21 Dec 2010
    Last edited: 21 Dec 2010
  5. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Подскажите сдампила базу.
    В итоге открываю базу через текстовик а там русские буквы отображаются вот так Торадор.
    Решила сделать новый дамп но доступ к бд был потерян.
    Как мне теперь импортнуть данную базу чтобы русские символы отображались в ней верно?
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Rastamanka как обычно импортируйте, в файле данные хранятся в кодировке UTF8

    wildshaman и это влезает в один запрос mysql_query?
     
    _________________________
  7. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Нужно выбрать все значения начиная с 40.
    В доке написано :

    А мне ругается на кривой запрос.Второй параметр не может быть -1

    Как выбрать? (
     
  8. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    Нет, проснулся и понял, что решение так и не найдено, все еще актуально :(
     
  9. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Здравствуйте!

    Вопрос по структуре базы данных...

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

    Как это красиво разместить в базе, чтобы потом было удобно с этим работать..?!

    У меня 2 варианта и оба мне не нравятся:

    1) в таблице с элементами создать поле, куда через разделитель писать категории, которым соответствует элемент...

    2) создать дополнительную таблицу с 2-мя полями (элемент, категория)...


    В первом варианте не нравится то, что при выводе элементов по категориям придётся по полю с категориями бегать LIKE-ом...

    Вариант 2 кажется менее удобным в плане редактирования элемента... Ну то есть в админке при редактировании элемента выдаются чекбоксы с категориями, с каких-то я снимаю отметки, на какие-то ставлю... Жмакаю "Сохранить".. И вот тут не удобно вносить изменения в таблицу "(элемент, категория)"


    Подскажите, есть ли другие варианты..?! либо какой из перечисленных мной вам кажется оптимальнее..?!

    PS: вопрос вероятно уже поднимался подобный, но я ответа не нашёл... просьба если что ткнуть носом..

    Спасибо!
     
  10. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Мне тоже так показалось, поэтому второй вариант я и реализовал... А теперь вот думаю как сделать страницу редактирования элементов..

    А перспектива такая:

    На странице редактирования элемента несколько чекбоксов (каждый соответствует некоторой категории) и если на чекбоксе категории1 стоит галка, то данный элемент входит в эту категорию...

    Допустим я ставлю галку на какой-то категории и жму "Сохранить", тогда в таблицу "(элемент, категория)" должны записаться все категории, на которых стояла галка...

    Теперь если с какой-то категории я снимаю галку, получается, что при сохранении изменений я должен для каждой неотмеченной категории сделать проверку, не была ли она отмечена раньше и если была, то удалить соответствующую запись из таблицы "(элемент, категория)"... если категорий много, то получится слишком много запросов и сравнений.. И хоть я понимаю, что редактировать элементы я буду не нак часто, не покидает ощущение того, что я делаю что-то через ж..у


    Был бы признателен за идею более лучшего варианта..)
     
  11. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Я кстати так и делал, для сайта объявлений об аренде квартир. Там нужно было по чекбоксам выбирать "теливоз, душ, стоянка, wi-fi" и т.д. Делал в БД 2 таблицы (Объявления, Опции)
    В объявлении было [Options=1,5,6,15]
    В таблице Options [id,value] [1 - Телевизор, 2 - телефон]

    Долго на этом не думал, сделал все через JS. (Тоже думал, как будет правильней и т.д. но решил не задерживаться) При нажатии на чекбокс по JS в hidden поле вносилось "нужный id," При снятии галочки - убирался.
    Вот оттуда функция:
    PHP:
    <script type='text/javascript'>
    function 
    params(ob) {
        var 
    plusParams document.getElementById('plus_params');
        if(
    ob.checked) {
            
    plusParams.value += ob.name+",";
            }else 
    plusParams.value plusParams.value.replace(ob.name+",","");
        }
    </script>
        <input type='checkbox' name='1' onclick='params(this);' />Чек 1<br />
        <input type='checkbox' name='2' onclick='params(this);' />Чек 2<br />
        <input type='checkbox' name='3' onclick='params(this);' />Чек 3<br />
        <input type='checkbox' name='4' onclick='params(this);' />Чек 4<br />
        <input type='checkbox' name='5' onclick='params(this);' />Чек 5<br />
        <input type='text' id='plus_params' name='pl_params' />
     
    1 person likes this.
  12. >>chiz<<

    >>chiz<< New Member

    Joined:
    4 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    У меня такая проблема.
    Начал разбираться с загрузкой из текстового файла. Если в текстовом файле в строке 3 поля и в БД нужно заполнить 3 записи, то все нормально, если же как в моей ситуации - начинаются баги. Ситуация такова:
    Есть текстовый файл, формата( ФИО Наименование_продукта Количество);
    есть Таблица: list (
    id not null auto_increment primary key int(2),
    name varchar (20),
    item varchar (40),
    num integer (2)
    );
    Я начинаю заполнять таблицу из тхт файла, следующим образом:
    LOAD DATA INFILE 'C:\\dir\\list.txt' INTO TABLE 'list' (name,item,num)
    FIELDS TERMINATED BE ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;

    Врезультате я получаю ошибку.....у меня есть предположения.....я скорее всего не правильно перечисляю список записей, в которые нужно добавлять данные.....
    Если не перечислять, то начинает с первого, а первое у меня ид, он автоинкремент.....
     
  13. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Подскажите составить запрос, есть две таблицы
    1.
    [​IMG]
    2.
    [​IMG]
    Нужно что бы вместо значения столбца user_id из 1й таблицы, выбиралось значение столбца user_name из 2й таблицы.
    вот так:
    [​IMG]
     
  14. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    SELECT `1`.`anonim`, `2`.`user_name`, `1`.`commentFROM `1LEFT JOIN `2ON `1`.`user_id` = `2`.`user_id`
    1 заменяешь на название первой таблицы, 2 на название 2й
     
  15. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    что то user_name не выводит :(

    anonim.......user_name.......comment
    ..................NULL.........комментарий.1
    Andrei..........NULL.........комментарий.2
    ..................NULL.........комментарий.3
    Anni............ NULL.........комментарий.4
     
  16. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    Как удалить из базы mysql - dle_post
    вот такие коды

    <!--11bb9fdd1d50ab5c1c8c4f8fa3a10867-->
    <!--34040b6c14306f20e53e5af0a363de15-->
    <!--c63b6f146d2b8f09a3b653f662c832cb-->
    <!--e6ccef4edc27057660577046a07b88f1-->
    <!--ce374b3dbd23cf49d292d65c970d46ee-->

    они разные коды в <!--код--> хотелось удалить но как ? :)
     
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Почитайте про регулярки в мускуле - REGEXP/RLIKE
     
    1 person likes this.
  18. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    Нверное не кто не знает как убрать <!--код-->
     
  19. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Так можно найти все запси в БД которые содержат в короткой новости код.
    Code:
    SELECT * FROM dle_post WHERE short_story LIKE '%<!-- (32 раза нижнее подчеркивание "_") -->%';

    Подскажите как объединить 3 запроса в 1, ато было коденг выходит, на мануалы время нет, этот скрипт нужен сегодня. Обещаю выучить MySQL позже =)

    PHP:
            $db->query("UPDATE config SET val='".$db->safesql($_POST['meta_desc'])."' WHERE var = 'meta_desc';");
            
    $db->query("UPDATE config SET val='".$db->safesql($_POST['meta_keywords'])."' WHERE var = 'meta_keywords';");
            
    $db->query("UPDATE config SET val='".$db->safesql($_POST['title'])."' WHERE var = 'title';");
     
    #1319 b3, 2 Feb 2011
    Last edited: 2 Feb 2011
  20. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Вы ни советы не умеете читать, ни маны. Для выборки юзайте один из запросов
    Code:
    SELECT * FROM dle_post WHERE short_story LIKE '%<!--________________________________-->%';
    SELECT * FROM dle_post WHERE short_story LIKE CONCAT('%<!--', REPEAT('_', 32), '-->%');
    SELECT * FROM dle_post WHERE short_story RLIKE '<!--[0-9A-F]{32}-->';
    
    Для удаления средств мускуля, скорее всего, не хватит - не припомню функции, аналогичной regexp_replace в СУБД PostgreSQL. Самый простой вариант - написать скрипт на PHP/Perl/др. для поиска таких строк, обработки их регуляркой, потом UPDATE в таблицу.
    Имхо, никак, условия во WHERE разные
     
Thread Status:
Not open for further replies.