2015-09-30 2 views
2

У меня есть довольно сложный запрос:SQL: объединить два выбирает в одном комплексе Query

$query = "SELECT * FROM element_skanning yt1 
      JOIN (SELECT objekt_nr, element_nr, vart 
       FROM element_skanning 
       GROUP BY objekt_nr, element_nr, vart 
       HAVING count(*) > 1) 
      yt2 ON (yt2.objekt_nr=yt1.objekt_nr AND yt2.element_nr=yt1.element_nr AND yt2.vart=yt1.vart) 
      ORDER BY 2"; 

Это как мой дб выглядит следующим образом:

id  objekt_nr  element_nr  vart 
----------------------------------------- 
1   1    1   Blå 
2   1    1   Blå 
3   1    1   Rosa 
4   1    1   Kont 
5   2    1   Rosa 
6   2    2   Blå 

Мой excisting запрос даст мне результат: 1 & 2 потому что я использую три входа.

Теперь я хотел бы поискать третьего обмана. Id: 3
Как я могу получить результат id: 1,2,3, но не 4, 5 и 6?
Проверка должна быть, если есть строка с тем же obj_nr & el_nr, но «blå» или «Rosa» «vart» раньше.
Так, Id 3 будет простофиля из ид: 1 & 2.
Id: 2, будет простофиля из 1 & 3.
Id: 1, будет простофиля из 2 & 3.

Я переписал это несколько раз, я думаю, поэтому я не могу написать запрос.
Надеюсь, вы можете понять, чего я хочу здесь ?!
И как это сделать?

ответ

1

Если я правильно понимаю:

SELECT * 
FROM element_skanning yt1 JOIN 
    (SELECT objekt_nr, element_nr 
     FROM element_skanning 
     WHERE vart IN ('blå', 'Rosa') 
     GROUP BY objekt_nr, element_nr 
     HAVING count(*) > 1 
    ) yt2 
     ON yt2.objekt_nr = yt1.objekt_nr AND 
     yt2.element_nr = yt1.element_nr 
WHERE vart IN ('blå', 'Rosa') 
ORDER BY 2; 
+0

хорошо выглядит, и работает. Но у меня только были обманы, если у «vart» есть две записи «blå». Нет, если кто-то «blå», а один - «rosa», но имеет тот же obj & el_nr ... –

+0

Может ли быть эта строка, которая ошибается: yt2.vart = yt1.vart? –

+1

@ Mjukis. , , Я думаю, там была какая-то желаемая кодировка. Я знал, что хочу, но не может «присоединяться» к «vart» и проверять дубликаты без 'vart'. Таким образом, модификация должна исправить эту проблему. –

Смежные вопросы