Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:28 02.07.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Въпрос за една MySQL заявканови  
Автор Dakota (erotoman)
Публикувано09.05.03 18:16



Имам 3 таблици: USER, MISSION и OBJECT_HISTORY.

Всеки USER може да има много MISSION-и, а всеки MISSION си има по едно OBJECT_HISTORY, където се указват разни параметри за него.

Целта ми е да изкарам всички USER-и, със съответните им MISSION-и, при условие, че полето object_status в OBJECT_HISTORY е равно на 1.

И ето какво правя:


SELECT
...
FROM
USER u LEFT OUTER JOIN MISSION m
ON
u.user_sid=m.user_sid LEFT JOIN OBJECT_HISTORY o
ON
o.object_history_sid=m.object_history_sid
WHERE
o.object_status_sid=1 OR o.object_history_sid IS NULL


Излизат всички потребители, които имат активни мисии или изобщо нямат. Но! Имам и потребители, които имат само неактивни мисии (o.object_status_sid=2), които заради проверката в WHERE частта не излизат - естествено. А аз задължително искам всички потребители, т.е. тези, които имат мисии с object_status_sid=2 да излизат все едно нямат никакви мисии...но да излизат все пак.

И така...лесно мога да разкарам проверката от MySQL и да я правя в PHP, обаче това е кофти решение, при положение, че съм 80% сигурен, че има това query, което ми трябва.

Някакви идеи?

Редактирано от Dakota на 09.05.03 18:26.



Тема Re: Въпрос за една MySQL заявканови [re: Dakota]  
Автор Grent (непознат)
Публикувано09.05.03 18:34



Ако имаш отношение в таблиците 1 към едно значи самата база е зле конструирана. Опитай да я промениш, като обединиш тези две таблици ( между които е отношението )

За каузътъ.


Тема offtopic [re: Grent]  
Автор Dakota (erotoman)
Публикувано09.05.03 18:38



Не е точно така...защото имам още 20 таблици, които си имат представяне в OBJECT_HISTORY...просто там има общи неща за всички обекти в базата ми.



Тема Re: Въпрос за една MySQL заявканови [re: Dakota]  
Автор PhantomAS (няма)
Публикувано10.05.03 11:06



На пръв поглед (без много много да мисля) ми се струва, че трябва да ползваш за втората част OUTER JOIN - нещо не ти е чиста логиката - защото ползваш полето o.object_history_sid=m.object_history_sid за връзка между двете таблици и едновременно с това о4акваш то да е празно. По начина по който си написал заявката ще ти дава само редовете в които имаш данни и в трите таблици - ще се пропуска винаги NULL -а.

---
Е т'ва е живот!


Тема Re: Въпрос за една MySQL заявканови [re: Dakota]  
АвторDNB (Нерегистриран)
Публикувано10.05.03 14:49



Shto ne probvash neshto bez JOIN-ove? !

Mahnete gi tia typi reklami be!



Тема Re: Въпрос за една MySQL заявканови [re: PhantomAS]  
Автор Dakota (erotoman)
Публикувано10.05.03 17:52



Не...NULL-овете излизат. Не излизат тези, за които object_staus_sid=2.



Тема Реших си проблеманови [re: Dakota]  
Автор Dakota (erotoman)
Публикувано10.05.03 18:56



Използвам temporary table, където запазвам MISSION и въпросното поле от OBJECT_HISTORY...по този начин наблъсках проверките в ON частта.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.