![]() |
![]() ![]() |
![]() |
![]()
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 ![]() -------------------- |
|
|
![]()
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] |
|
|
![]()
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 :-) -------------------- |
|
|
![]()
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. |
|
|
![]()
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] -------------------- |
|
|
![]()
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]; |
|
|
![]()
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] -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:26 |