Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie do dwóch tabel z warunkiem
Forum PHP.pl > Forum > Bazy danych
spenalzo
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?
uboottd
E ?
[sql:1:15d541e6e4]
SELECT users.*
FROM users, photos
WHERE photos.userid = users.ID
GROUP BY users.ID
[/sql:1:15d541e6e4]
spenalzo
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 :-)
uboottd
[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.
spenalzo
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]
web86
[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];
spenalzo
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]
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.