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

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

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

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема SQL заявканови  
Автор aruseva (непознат )
Публикувано28.09.09 20:25



Здравейте!!!
проблемът ми е следният:
Имам следните две таблици:

http://inlinethumb21.webshots.com/468/2468648650061623857S500x500Q85.jpg

След изпълнение на тази заявка
SELECT Door_Type.ID_Doors, Door_Type.Name AS Type_Door, Door_Chela.ID_Door_Chela,Door_Chela.Name AS Name_Chela,
Korpus_Door_Type.ID_Korpus
FROM Korpus_Door_Type INNER JOIN
Door_Type ON Korpus_Door_Type.ID_Door_Type = Door_Type.ID_Doors INNER JOIN
Door_Chela ONKorpus_Door_Type.ID_Door_Chela = Door_Chela.ID_Door_Chela
WHERE (dbo.Korpus_Door_Type.ID_Korpus = 4)

Резултата е този:
http://inlinethumb18.webshots.com/31377/2750197630061623857S600x600Q85.jpg

Кажете ми как трябва да ми изглежда заявката за да се показват само редовете маркирани в синьо. Т,е да се показват само тези резултати за ID_Doors , които имат ст-ти за ID_Door_Chela 1 4.



Тема Re: SQL заявканови [re: aruseva]  
Автор salle (един такъв)
Публикувано28.09.09 22:15



"да се показват само тези резултати за ID_Doors , които имат ст-ти за ID_Door_Chela 1 4."

се превежда като

... AND Door_Chela.ID_Door_Chela =1

или

... AND Door_Chela.ID_Door_Chela =1

или

... AND Door_Chela.ID_Door_Chela IN(1,4)

във WHERE в зависимост от това какво точно искаш



Тема Re: SQL заявканови [re: salle]  
Автор aruseva (непознат )
Публикувано28.09.09 23:09



Да не съм се изразира правило . Искам да се показват само тези резултатите които за едно и също ID_Doors имат едновременно ст-ти на ID_Door_Chela 1 и 4.
от резултата на второто изображение искам да изведа само сините полета. Тези със стойност на ID_Doors = 2 и 13, защото само те имат ID_Doors_Chelo едновремено записи със ID_Doors = 1 и 4.

Door_Chela.ID_Door_Chela IN(1,4) извежда всички записи за ID_Doors както съм ги показала, а аз искам да сортирам само някой от тях....

Оххх нещо и аз не мога да го обесня май както трябва, дано някой да успее да ме разбере



Тема Re: SQL заявканови [re: aruseva]  
Автор salle (един такъв)
Публикувано29.09.09 00:54



"Искам да се показват само тези резултатите които за едно и също ID_Doors имат едновременно ст-ти на ID_Door_Chela 1 и 4"

Как ще стане това ID_Door_Chela да е 1 и 4 едновременно?

Ако под едновременно разбираш в един и същи ред това очевидно е невъзможно. Ако разбираш нещо друго ... обясни.

Редактирано от salle на 29.09.09 00:58.



Тема Re: SQL заявканови [re: salle]  
Автор aruseva (непознат )
Публикувано29.09.09 08:09



да не може едновременно ID_Door_Chela да има ст-ст 1 и 4
просто искам да се сортират само тези редове за ID_Doors който имат ст-ст за ID_Door_Chelo както 1 така и 4 . Примерно ред 3 не отговаря на условието защото няма запис при който ID_Door_Chela = 4 и ID_Doors = 1



Тема Re: SQL заявканови [re: aruseva]  
Автор salle (един такъв)
Публикувано29.09.09 16:43



Мисля, че схващам какво искаш, но ще трябва да обясниш по-подробно структурата на таблиците и по точно какво може и какво не може да има в тях като данни . В зависимост от това решението е различно.

За целта да вземем един прост пример. Използвам MySQL, но таблицата е напълно стандартна.

CREATE TABLE t (x INT, y INT, PRIMARY KEY(x,y));

INSERT INTO t VALUES(1, 1), (1,4), (2,1), (3,1),(3,4), (4,4), (5,2);

SELECT * FROM t;
+---+---+
| x | y |
+---+---+
| 1 | 1 |
| 1 | 4 |
| 2 | 1 |
| 3 | 1 |
| 3 | 4 |
| 4 | 4 |
| 5 | 2 |
+---+---+
7 rows in set (0.00 sec)


Ако правилно съм те разбрал задачката е да извадим тези x за които има редове с и y=1 и y=4 т.е. в този случай x = 1 и x = 3

Решението за общия случай по-добре е JOIN на таблицата към самата себе си толкова пъти колкото стойности на y ни трябват. В случая:

SELECT t1.x FROM t AS t1, t AS t2 WHERE t1.x = t2.x AND t1.y = 1 AND t2.y = 4;
+---+
| x |
+---+
| 1 |
| 3 |
+---+

За да разбереш откъде идва резултатът ето оттук:

mysql> SELECT * FROM t AS t1, t AS t2 WHERE t1.x = t2.x;
+---+---+---+---+
| x | y | x | y |
+---+---+---+---+
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 4 |
| 1 | 4 | 1 | 1 |
| 1 | 4 | 1 | 4 |
| 2 | 1 | 2 | 1 |
| 3 | 1 | 3 | 1 |
| 3 | 1 | 3 | 4 |
| 3 | 4 | 3 | 1 |
| 3 | 4 | 3 | 4 |
| 4 | 4 | 4 | 4 |
| 5 | 2 | 5 | 2 |
+---+---+---+---+
11 rows in set (0.00 sec)

mysql> SELECT * FROM t AS t1, t AS t2 WHERE t1.x = t2.x AND t1.y = 1;
+---+---+---+---+
| x | y | x | y |
+---+---+---+---+
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 4 |
| 2 | 1 | 2 | 1 |
| 3 | 1 | 3 | 1 |
| 3 | 1 | 3 | 4 |
+---+---+---+---+
5 rows in set (0.00 sec)

SELECT * FROM t AS t1, t AS t2 WHERE t1.x = t2.x AND t1.y = 1 AND t2.y = 4;
+---+---+---+---+
| x | y | x | y |
+---+---+---+---+
| 1 | 1 | 1 | 4 |
| 3 | 1 | 3 | 4 |
+---+---+---+---+
2 rows in set (0.00 sec)


Можеш ли оттук нататък да приложиш логиката върху твоята заявка?

Редактирано от salle на 29.09.09 16:45.



Тема Re: SQL заявканови [re: salle]  
Автор salle (един такъв)
Публикувано29.09.09 16:50



И за да демонстрирам защо структурата и съдържанието са от значение ето едно хакерско решение за примера който използвам:

SELECT x FROM t WHERE y IN (1,4) GROUP BY x HAVING COUNT(*) = 2;
+---+
| x |
+---+
| 1 |
| 3 |
+---+
2 rows in set (0.00 sec)


В случая използвам, че PRIMARY KEY(x, y) следователно y IN (1,4) ще върне максимум 2 реда за всяко x.



Тема Re: SQL заявканови [re: salle]  
Автор aruseva (непознат )
Публикувано29.09.09 23:12



Salle, благодаря ти многоооо



Това което си ми предложил със Join към таблицата Korpus_Door_Type много ми помогна и всичко се получи така както го исках.

Отностно структурата на таблиците.
Таблицата Korpus_Door_Type съдържа 4 полета
1)ID_Korpus_Door_Type от тип integer - което е primary key
2) ID_Korpus от тип integer
3)ID_Door_Type от тип integer
4)ID_Door_Chela от тип integer

Отново мн ти благодаря , че имаше търпение и ме разбра какво точно искам да постигна.



Тема Re: SQL заявканови [re: aruseva]  
Автор salle (един такъв)
Публикувано29.09.09 23:35



Е аз бавно загрявам затова ми трябва много търпение.

И недей да се занимаваш с бази данни в 23:12. Нищо добро не излиза от това.



Тема Re: SQL заявка [re: salle]  
Автор aruseva (непознат )
Публикувано29.09.09 23:51



е понякога се получават нещата ;)
както тази вечер




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


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

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