За последние 24 часа нас посетили 68076 программистов и 1645 роботов. Сейчас ищут 988 программистов ...

mySQL запрос

Тема в разделе "PHP для новичков", создана пользователем wir_wolf, 8 фев 2010.

  1. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    [sql]select
    pr.id_priem
    , pr.numorder
    , pr.name
    , pr.type
    , pr.priem
    , pr.n_block
    , pr.n_counter
    , pr.n_hit
    , pr.n_hp
    , pr.n_krit
    , pr.n_parry
    , pr.minlevel
    , pr.wait
    , pr.minhp
    , pr.sduh_proc
    , pr.sduh
    , pr.hod
    , pr.intel
    , pr.mana
    , pr.opisan
    , pr.m_magic1
    , pr.m_magic2
    , pr.m_magic3
    , pr.m_magic4
    , pr.m_magic5
    , pr.m_magic6
    , pr.m_magic7
    , pr.need_sil
    , pr.need_vyn
    , pr.target
    ,(select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem) as ifa from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql]

    нужно сделать так, чтобы когда в ifa было какое то значение то ifa становилось TRUE а если пустота то FALSE
    [sql]if ifa=null then ifa=FALSE else ifa=TRUE[/sql]
    Не получается=(
     
  2. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Вообще, в стандарте ANSI SQL существует такая конструкция:

    [sql]...
    (WHEN ifa IS NULL THEN true ELSE false END) as fld_name
    [/sql]

    попробуй
     
  3. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    вопрос номера 2. А где его вписать?
    [sql] select
    pr.id_priem
    , pr.numorder
    , pr.name
    , pr.type
    , pr.priem
    , pr.n_block
    , pr.n_counter
    , pr.n_hit
    , pr.n_hp
    , pr.n_krit
    , pr.n_parry
    , pr.minlevel
    , pr.wait
    , pr.minhp
    , pr.sduh_proc
    , pr.sduh
    , pr.hod
    , pr.intel
    , pr.mana
    , pr.opisan
    , pr.m_magic1
    , pr.m_magic2
    , pr.m_magic3
    , pr.m_magic4
    , pr.m_magic5
    , pr.m_magic6
    , pr.m_magic7
    , pr.need_sil
    , pr.need_vyn
    , pr.target
    ,(select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem)(WHEN ifa IS NULL THEN true ELSE false END) as ifa from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql] ошибка.
    [sql] select
    pr.id_priem
    , pr.numorder
    , pr.name
    , pr.type
    , pr.priem
    , pr.n_block
    , pr.n_counter
    , pr.n_hit
    , pr.n_hp
    , pr.n_krit
    , pr.n_parry
    , pr.minlevel
    , pr.wait
    , pr.minhp
    , pr.sduh_proc
    , pr.sduh
    , pr.hod
    , pr.intel
    , pr.mana
    , pr.opisan
    , pr.m_magic1
    , pr.m_magic2
    , pr.m_magic3
    , pr.m_magic4
    , pr.m_magic5
    , pr.m_magic6
    , pr.m_magic7
    , pr.need_sil
    , pr.need_vyn
    , pr.target
    ,(select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem WHEN ifa IS NULL THEN true ELSE false END) as ifa from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql] тоже ошибка..
     
  4. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    [sql]... p.id_thing=pr.id_priem)(WHEN ifa IS ...[/sql] вероятно между скобками не хватает запятой. а так, место правильное для вставки.
    в следующий раз не поленись ошибку написать.
     
  5. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    [sql]select *,
    (select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem),
    (WHEN used IS NULL THEN true ELSE false END) as used from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql]

    Error Code : 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN used IS NULL THEN true ELSE false END) as used from priem pr
    ORDER BY pr.' at line 3
    (0 ms taken)
     
  6. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    мда, в мускуле эта конструкция немножко по-другому выглядит.
    попробуй так:

    [sql](CASE WHEN used IS NULL THEN true ELSE false END) as used[/sql]
     
  7. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    [sql] select *,
    (select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem),
    (CASE WHEN used IS NULL THEN true ELSE false END) as used from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql]

    Error Code : 1054
    Unknown column 'used' in 'field list'
    (0 ms taken)
     
  8. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    блин, откуда ж мне знать, как там это поле назвается, которое ты тестируешь.
    откуда вообще взялся used? на его месте должно быть поле или выражение, которое ты сравниаешь с NULL
     
  9. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    короче так:
    [sql]select
    pr.id_priem
    , pr.numorder
    , pr.name
    , pr.type
    , pr.priem
    , pr.n_block
    , pr.n_counter
    , pr.n_hit
    , pr.n_hp
    , pr.n_krit
    , pr.n_parry
    , pr.minlevel
    , pr.wait
    , pr.minhp
    , pr.sduh_proc
    , pr.sduh
    , pr.hod
    , pr.intel
    , pr.mana
    , pr.opisan
    , pr.m_magic1
    , pr.m_magic2
    , pr.m_magic3
    , pr.m_magic4
    , pr.m_magic5
    , pr.m_magic6
    , pr.m_magic7
    , pr.need_sil
    , pr.need_vyn
    , pr.target
    ,(case when (select p.id_thing from puton p where p.id_person='14' and p.id_thing=pr.id_priem) IS NULL THEN true ELSE false END) as ifa from priem pr
    ORDER BY pr.type ASC, pr.n_block ASC, pr.n_counter ASC, pr.n_hit ASC, pr.n_hp ASC, pr.n_krit ASC, pr.n_parry ASC, pr.minhp ASC, pr.sduh_proc ASC;[/sql]
     
  10. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    ем... лан смотри, был написан запрос [sql]select pr.id_priem, (select p.id_thing from puton p where p.id_person='".$myinfo->id_person."' and p.id_thing=pr.id_priem) as ifa from priem pr[/sql]
    в результате этого выходила таблица
    [​IMG]
    а вот поля которые с таблицах
    [​IMG]
     
  11. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    [sql]select pr.id_priem, (case when (select p.id_thing from puton p where p.id_person='".$myinfo->id_person."' and p.id_thing=pr.id_priem) IS NULL THEN true ELSE false END) as ifa from priem pr[/sql]
     
  12. wir_wolf

    wir_wolf Активный пользователь

    С нами с:
    10 янв 2009
    Сообщения:
    183
    Симпатии:
    0
    engagerУРА, спасибо=)