|
|
|
Вопрос моей ЖИЗНИ или СМЕРТИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Понимаю, что всем уже надоел, но очень прошу помочь, вопрос ЖИЗНИ И СМЕРТИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Помогите, господа профессионалы !!!!!!!!!!!!!!!!!!!! ГОРЮ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! У меня проблемы из-за структуры этой идиотской таблицы INFORMATION Есть такой запрос: DECLARE @date_arr VARCHAR(10) set @date_arr='2002-07-24' select guest.account, history.ghacct, convert(varchar(10),information.info), --Здесь я получаю номер -- (структура таблицы внизу) -- information.code 'НАДО ЧТО-Б ЗДЕСЬ БЫЛ ТИП, НАПРИМЕР - N' -- information.info 'НАДО ЧТО-Б ЗДЕСЬ БЫЛА ДАТА, КОТОРАЯ НАПРОТИВ information.code СО ЗНАЧЕНИЕМ "day"', -- information.info 'НАДО ЧТО-Б ЗДЕСЬ БЫЛА ДАТА, КОТОРАЯ НАПРОТИВ information.code СО ЗНАЧЕНИЕМ "day_ar"', history.name, history.id_type, history.id, history.birth_place_county, convert(varchar(10),history.issue_date, 103), convert(varchar(10),history.exp_date, 103), convert(varchar(10),history.dob, 103), history.sex, history.phone, history.fax, history.email, history.history_code, history.zip, history.country, history.city, history.address, history.state from guest , z_roomtype , history , information where guest.arrival=@date_arr and guest.status in ('I','O') and guest.room_type=z_roomtype.code and z_roomtype.roomtype_group='CS' and guest.ghacct*=history.ghacct and guest.ghacct*=information.account and information.code='N' =========================================================== Таблица INFORMATION представлена в таком виде: account code info -------- ------ --------- 805319 DAY 20/05/02 805319 N 123458 805319 TYPE SILVER 805320 DAY 23/05/02 805320 N 123456 805320 TYPE SILVER 805326 DAY 10/03/02 805326 DAY_AR 10/03/02 805326 N 111222 805326 TYPE SILVER 805542 DAY 23/05/02 805542 N 123457 805542 TYPE SILVER КАК ЭТО СДЕЛАТЬ ??????????????????????????????????? ПОМОГИТЕ ПОЖАЛУЙСТА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 19:34:11 |
|
||
|
Вопрос моей ЖИЗНИ или СМЕРТИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Общее направление - это делается через подзапросы, где-то так: SELECT guest.*, t.* FROM guest LEFT JOIN (SELECT ... FROM INFORMATION) t ON guest.account=t.account WHERE ... t.code='N' А вот этот-то подзапрос, результатом которого является таблица t и конвертирует твою таблицу Information в тот вид, который ты и просил ранее - т.е. одна запись на каждый Account ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 20:25:16 |
|
||
|
Вопрос моей ЖИЗНИ или СМЕРТИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|---|---|---|---|
|
#18+
C JOIN сложновато, так как участвуют 4 таблицы, а если так сделать будет ли это корректно ???????? select .......... (select info from information where code='TYPE' and guest.ghacct*=information.account)'Тип' from ......... where ......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 20:36:50 |
|
||
|
Вопрос моей ЖИЗНИ или СМЕРТИ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Ну, насколько я знаю, когда ты пишешь guest.ghacct*=information.account это и есть абсолютный аналог LEFT JOIN и 4 таблицы - это далеко не предел Предложенный тобой вариант теоретически тоже будет работать, хотя я бы написал подзапрос несколько иначе: (select MAX(info) from information where code='TYPE' and information.account=guest.ghacct) as TYPE Я использовал MAX() на тот вполне вероятный случай, когда для указанного значения guest.ghacct нет записи со значением code='TYPE'. Я просто не знаю, что получится если в данном месте подзапрос не вернет ни одного значения. Впрочем, как именно писать подзапросы - это уже дело вкуса и личных предпочтений. Ну и конечно планировщика запросов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 10:46:47 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32038682&tid=1821583]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 373ms |

| 0 / 0 |
