Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]subselect, order i not null
lobopol
post 19.02.2012, 19:26:28
Post #1





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Mam 2 tabele
article
-id
-content

image
-id
-article_id
-position

chcę jednym zapytaniem pobrać wszystkie artykuły które mają zdjęcia, i chcę równocześnie mieć wszystkie id tych zdjęć, zdjęcia chcę mieć w kolejności zależnej od position

czyli przy bazie mającej :

article:
id content
1 tresc1
2 tresc2
3 tresc3
4 tresc4
Kod
image
id article_id position
1  1              2
2  2              1
3  1              1
4  1              3
5  4              1

wynik
Kod
id images
1    3,1,4
2    2
4    5


  1. SELECT
  2. article.id,
  3. (SELECT GROUP_CONCAT(image.id ORDER BY image.position ASC)
  4. FROM
  5. image
  6. WHERE
  7. image.article_id= article.id) AS images
  8. FROM
  9. article
  10. WHERE
  11. images IS NOT NULL

To zwraca mi błąd
Kod
[Window Title]
Error

[Content]
SQL Error (1054): Unknown column 'images' in 'where clause'
[OK]


to

  1. SELECT
  2. article.id,
  3. (SELECT GROUP_CONCAT(image.id ORDER BY image.position ASC)
  4. FROM
  5. image
  6. WHERE
  7. image.article_id= article.id ) AS images
  8. FROM
  9. article

zwraca mi :
1 3,1,4
2 2
3 (NULL)
4 5
Czyli wynik z nullem ma ktoś może jakąś koncepcje?

Ten post edytował lobopol 19.02.2012, 19:31:36


--------------------
Go to the top of the page
+Quote Post
Sephirus
post 20.02.2012, 09:24:18
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. SELECT a.id AS id, GROUP_CONCAT(im.id) AS img_id FROM image AS im
  2. JOIN article AS a ON a.id = im.article_id WHERE im.id IS NOT NULL
  3. GROUP BY im.article_id ORDER BY im.position ASC


Ten post edytował Sephirus 20.02.2012, 09:25:11


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
lobopol
post 20.02.2012, 18:05:40
Post #3





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Dziś już problem rozwiązałem
  1. SELECT
  2. article.id,
  3. GROUP_CONCAT(image.id ORDER BY image.position ASC) AS images,
  4.  
  5. FROM
  6. project
  7. JOIN image ON image.article_id = article.id
  8. WHERE
  9. article.STATUS = "active"
  10. GROUP BY
  11. article.id
  12. LIMIT 58

Pomógł leci za chęć pomocy smile.gif


--------------------
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:56