Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie do dwóch tabel z warunkiem
spenalzo
post
Post #1





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Jak zrobić takie coś:
mam dwie tabele users i photos - jak wyciągnąć wszystkie dane z tabeli users gdy ilośc rekordów w tabeli photos jest większa niż 0 dla wszystkich photos.userid=users.ID questionmark.gif?


--------------------

Go to the top of the page
+Quote Post
uboottd
post
Post #2





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


E ?
[sql:1:15d541e6e4]
SELECT users.*
FROM users, photos
WHERE photos.userid = users.ID
GROUP BY users.ID
[/sql:1:15d541e6e4]
Go to the top of the page
+Quote Post
spenalzo
post
Post #3





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Bardziej zakreconego, ale też chyba za bardzo zagmatwqanie napisałem.
Mam tabele users i photos - chcę wyciągnąć dane fname z tabeli users i tak wszystkich użytkownikow, ktorzy mają dodaje co najmniej jedno zdjęcie i co ważne z warunkiem active='1'. Do tej pory mialem coś takiego:
[sql:1:c2f0f7caa9]SELECT ID FROM users[/sql:1:c2f0f7caa9]
[sql:1:c2f0f7caa9]SELECT fname FROM users WHERE ID='$kolejny_id'[/sql:1:c2f0f7caa9]
[sql:1:c2f0f7caa9]SELECT * FROM photos WHERE userid='$kolejny_id' AND active='1' ORDER BY ID LIMIT 1[/sql:1:c2f0f7caa9]
Wiem, że to można skrócić - ale jak? :-|

Update: widze ze zmieniles posta, stad moje odwolanie na poczatku tego :-)


--------------------

Go to the top of the page
+Quote Post
uboottd
post
Post #4





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


[sql:1:185ecb6e92]
SELECT users.*
FROM users, photos
WHERE photos.userid = users.ID AND active=1
GROUP BY users.ID
[/sql:1:185ecb6e92]

Uzytkownicy bez fotografi odpadna juz na sklejeniu, wiec nie trzeba juz kombinowac.
Go to the top of the page
+Quote Post
spenalzo
post
Post #5





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Dzięki bardzo! =D>
Zmodyfikowałem sobie tak zapytanie
[sql:1:9ab0bd99b4]SELECT u.ID AS ID, d.fname AS fname, p.address AS address FROM users u, user_data d, photos p WHERE p.userid=u.ID AND u.active=1 AND p.active=1 GROUP BY u.ID[/sql:1:9ab0bd99b4] i wszystko jest OK za wyjątkiem, tego, że wartość fname jest zawsze taka sama :-/ mimo, że w bazie jest OK...

Do wyświetlania kodu używam standardowej pętli for
[php:1:9ab0bd99b4]<?php
@mysql_data_seek($q,$i);
$t=mysql_fetch_array($q);
?>[/php:1:9ab0bd99b4]


--------------------

Go to the top of the page
+Quote Post
web86
post
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 24.09.2003

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


[sql:1:40e00868e8]SELECT u.*, d.*, p.* FROM users u, user_data d, photos p WHERE p.userid=u.ID AND u.active=1 AND p.active=1 GROUP BY u.ID[/sql:1:40e00868e8]
i wtedy w
[php:1:40e00868e8]<?php
$result = $db->sql_query($sql);
while ($row = mysql_fetch_array($sql) {
$wynik[] = $row;
}
?>[/php:1:40e00868e8]

i teraz masz array'a: $wynik[indeks_numeryczny][indeks_nazwa_pola];
Go to the top of the page
+Quote Post
spenalzo
post
Post #7





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Problem rozwiazany - brakowąło jednego warunku.
[sql:1:b5821b27a8]SELECT u.ID AS ID, d.fname AS fname, p.address AS address FROM users u, user_data d, photos p WHERE d.ID=u.ID AND p.userid=u.ID AND u.active=1 AND p.active=1 GROUP BY u.ID[/sql:1:b5821b27a8]


--------------------

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 Aktualny czas: 19.08.2025 - 05:26