rgrg2
2.09.2013, 12:50:34
chcę odczytać wszystkie id rekordów które w polu usermode mają tą samą wartość
zapytanie03 działa, 02 i 01 nie
jakie zapytanie02 lub 01 w mysql będzie dobrze działać ?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
{
echo "nie połączono z bazą"; }
$zapytanie01 = "select * from uzytkownicy where usermode in ( select usermode from uzytkownicy group by usermode having count(*) > 1)";
$zapytanie02 = "select id from uzytkownicy group by usermode having count(*) > 1";
$zapytanie03 = "SELECT * FROM uzytkownicy";
{
$id = $dane['id'];
}
?>
nospor
2.09.2013, 12:53:09
02 nie dziala? A jaki dostajesz blad z bazy?
rgrg2
2.09.2013, 13:26:11
przy zapytaniu02 drukuje 1 2
zapytanie01 drukuje 1,2,3,4
a tylko rekordy z id 2,4 mają te same wartości w usermode
nospor
2.09.2013, 13:35:38
A pokaz dane jakie maszz w tabeli
rgrg2
2.09.2013, 13:44:39
nazwa_uz ; haslo ; email ; usermode ; id
rgrg2 ; 1qa2ws ; rgrg2@sdfsd.pl ; ; 1
rgrg22 ; 1q2w3e ; rgrg2@sdfdf.pl ; sdfsdf ; 2
rgrg222 ; 1qaz2ws ; rgrg2@asdaf.pl ; ; 3
asdasd ; sdfsdfsdf ; sdf@asdf.com ; sdfsdf ; 4
nospor
2.09.2013, 13:46:50
No i zapytanie drugie dziala tak jak mu pokazales.
rekordy 1 i 3 maja nic, czyli maja to samo wiec je grupuje i wyswietla 1
2 i 4 maja to samo wiec je grupuje i wyswietla 2.
Wszystko w zgodzie z tym co napisales w zapytaniu
rgrg2
2.09.2013, 13:59:33
ale zapytanie ma drukowac 2 i 4
nie wiem jak to napisać takie zapytanie
mmmmmmm
2.09.2013, 16:10:47
Bza danych korzysta z algebry zbiorów, a nie "zwykłej" matematyki. Stosując IN sprawdzasz, czy w zbiorze elementów jest taki, którego porównujesz... NULL, czyli element pusty, również może być elementem zbioru. I to nastąpiło tutaj. Sprawdzasz, czy "element pusty" jest w zbiorze zawierającym m.in. "element pusty". Jest. I dlatego się pojawia. Jeśli nie chcesz, by się pojawiał musisz użyć =. każdy NULL jest różny od każdego innego NULLa.
rgrg2
2.09.2013, 17:53:54
ale jak to co napisałeś zastosować z tym zapytaniu
jak zmienić to zapytanie
$zapytanie01 = "select * from uzytkownicy where usermode in ( select usermode from uzytkownicy group by usermode having count(*) > 1)";
proszę napisz twoją wersję tego zapytania,
która ma wydrukować id 2, 4.
mmmmmmm
2.09.2013, 18:50:18
Przecież napisałem ci wyraźnie:
masz zamienić IN na =.
= w tym przypadku to... JOIN
Zapytanie będzie wyglądać tak:
SELECT * FROM uzytkownicy u JOIN ( SELECT usermode FROM uzytkownicy GROUP BY usermode HAVING count(id) > 1) x ON x.usermode=u.usermode
rgrg2
2.09.2013, 20:25:51
to zapytanie które napisałeś drukuje cyfry 1,2,3,4, a nie 2,4,
mmmmmmm
2.09.2013, 21:10:11
Drukuje 2, 4. Albo coś źle robisz, albo coś źle mówisz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.