Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]Pomijanie zdublowanych wyników
daniel1302
post 14.02.2012, 18:52:32
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam mam taką strukturę
id|name|owner
0|szklanka|0
1|kufel|0
2|kieliszek|0
3|miska|0
4|szklanka|11
5|miska|11
7|kufel|21

i teraz potrzebuje wybrać tylko te rekordy które się nie dublują, ale dla takiego warunku:
WHERE owner=0 AND owner=11

Czyli nie powinno mi zwrócić mi rekordu szklanka i miska
Czy jest to możliwe jednym zapytaniem?
Go to the top of the page
+Quote Post
bww
post 15.02.2012, 12:16:28
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

Ostrzeżenie: (0%)
-----


Zobacz, czy zadziała coś takiego...

  1. SELECT * FROM TABELA A
  2. WHERE
  3. (A.OWNER IN ('0','11')
  4. AND NOT EXISTS (
  5. SELECT 1 FROM TABELA B WHERE B.NAME = A.NAME AND B.OWNER IN ('0','11') GROUP BY B.NAME HAVING COUNT(*) > 1
  6. )
  7. )
  8. OR A.OWNER NOT IN ('0','11')


Ten post edytował bww 15.02.2012, 16:34:47
Go to the top of the page
+Quote Post
mortus
post 15.02.2012, 13:01:54
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Prościej:
  1. SELECT `t`.* FROM `tabela` `t` WHERE `t`.`owner` IN (0, 11) GROUP BY `t`.`name` HAVING COUNT(*) = 1;


Kolego @bww używaj odpowiednich tagów (przyciski w oknie edycji wiadomości) do umieszczania kodu na forum.

Ten post edytował mortus 15.02.2012, 13:03:38
Go to the top of the page
+Quote Post
bww
post 15.02.2012, 16:36:51
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

Ostrzeżenie: (0%)
-----


Cytat(mortus @ 15.02.2012, 13:01:54 ) *
Kolego @bww używaj odpowiednich tagów (przyciski w oknie edycji wiadomości) do umieszczania kodu na forum.

Jasne, przepraszam.

Cytat(mortus @ 15.02.2012, 13:01:54 ) *
Prościej:
  1. SELECT `t`.* FROM `tabela` `t` WHERE `t`.`owner` IN (0, 11) GROUP BY `t`.`name` HAVING COUNT(*) = 1;


Prościej, ale przy Twoim warunku kolega daniel1302 nie będzie miał w czym napić się piwa... wink.gif
Go to the top of the page
+Quote Post
mortus
post 15.02.2012, 16:42:02
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(bww @ 15.02.2012, 16:36:51 ) *
Jasne, przepraszam.



Prościej, ale przy Twoim warunku kolega daniel1302 nie będzie miał w czym napić się piwa... wink.gif

Będzie miał, będzie... sprawdź.
Go to the top of the page
+Quote Post
cojack
post 15.02.2012, 17:06:50
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


nie ma smile.gif


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
bww
post 15.02.2012, 17:15:21
Post #7





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

Ostrzeżenie: (0%)
-----


Cytat(mortus @ 15.02.2012, 16:42:02 ) *
Będzie miał, będzie... sprawdź.

Faktycznie, dla owner = 0 też istnieje kufel. Mimo wszystko zgubi się kufel dla owner = 21
Go to the top of the page
+Quote Post
mortus
post 15.02.2012, 17:16:04
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Kufelek o numerze 1 jest, kufelka o numerze 7 nie ma, czyli jest tak, jak chciał autor i nie wciskajcie mi kitu. Mają być pobrane wszystkie przedmioty dwóch użytkowników/właścicieli o numerach 0 i 11, ale tylko te, które nie są w posiadaniu obu jednocześnie.

EDIT1:
@up: I tak ma być.

EDIT2:
BTW: To właśnie Twoje zapytanie kolego @bww nie działa, jak trzeba.

Ten post edytował mortus 15.02.2012, 18:30:05
Go to the top of the page
+Quote Post
bww
post 15.02.2012, 19:09:40
Post #9





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

Ostrzeżenie: (0%)
-----


Zinterprtowałem to jako: Z podanej listy wybrać rekordy, których kolumna name nie dubluje się w obrębie podanego warunku. Kufel też się dubluje, ale kolumna owner jednego z rekordów jest poza warunkiem, a więc uznałem, że ją też trzeba wyciągnąć. Zmyliła mnie też informacja jakie rekordy nie powinny zostać zwrócone (szklanki nie ma, miski nie ma, o kuflu autor nic nie wspomniał).

Jak widać, muszę się dostroić... wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 11:41