siutek
27.01.2011, 12:05:29
witam,
posiadam tabele tbl_galeria, która w każdym rekordzie zawiera nazwę pliku graficznego. te nazwy NIGDY się nie powtarzają. jeden rekord = jedno zdjęcie.
w strukturze zawarłem kolumnę fld_gal_id. Jeśli zdjęcie funkcjonuje "samodzielnie" to pole to przyjmuje wartość NULL, jeśli zaś fotka "należy" do galerii, to w polu tym wpisywane jest ID galerii.
ID galerii to nic innego jak ID pierwszego dodanego do niej zdjęcia. Dzięki czemu unikam tworzenia dwóch tabel jedna ze zdjęciami, druga z galeriami.
Jednak nie mam pojęcia jak mam wyciągać dane z bazy przy założeniu że interesują mnie WSZYSTKIE zdjęcia samodzielne i po jednym zdjęciu z galerii.
próbowałem przez SELECT * FROM tbl_galeria GROUP BY fld_gal_id jednak zapytanie to zwraca mi oprocz zgrupowanych rekordów zdjęć należących do galerii, również zgrupowane WSZYSTKIE pliki samodzielne, czyli grupuje również rekordy z fld_gal_id=NULL.
Czy ktoś wie jak skonstruować zapytanie do bazy by rekordy z zawartością pola po którym grupuje = NULL nie były grupowane?
mam nadzieję, że wyjaśniłem w miarę jasno :/
nospor
27.01.2011, 12:08:05
najzwylkej w swiecie dodaj warunek WHERE.
siutek
27.01.2011, 12:14:40
tylko że wówczas wyświetli mi TYLKO rekordy które mają fld_gal_id=NULL lub TYLKO rekordy które fld_gal_id>0
w wyniku chcialbym otrzymać coś jak ponizej:
------------------------------------
| fld_id | fld_name | fld_gal_id |
------------------------------------
| 1 | a.jpg | NULL |
----------------------
| 2 | b.jpg | NULL |
----------------------
| 3 | c.jpg | NULL |
-------------------
| 4 | d.jpg | 10 |
-------------------
| 7 | e.jpg | 11 |
-------------------
a tabela przykładowo wygląda tak:
------------------------------------
| fld_id | fld_name | fld_gal_id |
------------------------------------
| 1 | a.jpg | NULL |
----------------------
| 2 | b.jpg | NULL |
----------------------
| 3 | c.jpg | NULL |
-------------------
| 4 | d.jpg | 10 |
-------------------
| 5 | f.jpg | 10 |
-------------------
| 6 | g.jpg | 10 |
-------------------
| 7 | e.jpg | 11 |
-------------------
| 8 | h.jpg | 11 |
-------------------
| 9 | i.jpg | 11 |
------------------
nospor
27.01.2011, 12:16:50
Acha, teraz rozumiem.
To zrob union z dwoch zapytan.
Jedno: grupowanie z where pole is not null
drugie: bez grupowania z warunkiem pole is null
siutek
27.01.2011, 12:28:14
HA! działa!! dziękować

dorzuce jeszcze limit i bedzie git!