Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie danych z innej tabeli do właściwej
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


Witam, już wyjaśniam o co chodzi

Mam 2 tabele

W pierwszej przechowuję id projektu i nr arkuszy które zostały wykonane na podstawie projektu

SHEETS
idarkusza|project|sheet
1 | 1 | 10
2 | 1 | 15
3 | 1 | 25
4 | 2 | 30
5 | 3 | 45
6 | 4 | 50

W drugiej przechowuję nazwy arkuszy

PROJECTS
idprojektu| nazwa
1 | a
2 | c
3 | d
4 | b

Teraz chodzi o to żeby posortować tabele po nazwie projektu czyli musi wyjść coś takiego


idarkusza | project | sheet
1 | 1 | 10
2 | 1 | 15
3 | 1 | 25
6 | 4 | 50
4 | 2 | 30
5 | 3 | 45

Czyli łopoatoligicznie
1 sortuje po nazwie tabele projekty
2 "dostawiam" id arkusza i nr sheeta do posortowanych po nazwie projektów

Własćwie potrzebuję dostać tylko id arkusza ale posortowanego w ten sposób

A teraz coś co wyszło ode mnie:
  1. SELECT id FROM (SELECT id FROM PROJECTS ORDER BY name ASC) AS project_ids INNER JOIN SHEETS


To zapytanie nie dziala poprawnie bo wyświetla wyniki podwójnie, możliwe że w ogóle jest do d...

Ten post edytował neo1986kk 19.11.2012, 23:51:30
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Czemu w ogóle używasz tutaj podzapytanie? Przecież ono niczemu nie służy.
2) Joinujesz drugą tabelę, ale nie określasz w jaki sposób ona łączy się z pierwszą tabelą w wyniku czego otrzymujesz iloczyn kartezjański obu tabel stąd te podwójne wyniki
Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


No tak, zgadza się, mnożę 2 tabele..
A to podzapytanie chciałem użyć to wygenerowania posortowanych po nazwie projektów, ale mi chyba nie wyszło...
Nie wiem moze tego się nie da zrobić w jednym zapytaniu?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Da się, tylko musisz powiedzieć po czym łączysz obie tabele. Musisz dać ON po INNER JOIN i napisać po jakich polach łączysz obie tabele
I wywal te podzapytanie. Ono niczemu nie służy. Sortować możesz i bez podzapytania.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


pole id_projektu z tabeli SHEETS odpowiada polu id z tabeli PROJECTS

Czyli to będzie coś takiego...
  1. SELECT sheets.id FROM sheets LEFT JOIN ON sheets.id_projektu=projects.id ORDER BY projects.name ASC


Ten post edytował neo1986kk 20.11.2012, 12:22:18
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czyli już ci działa?

ps: po LEFT JOIN zjadłeś nazwę tabeli...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:23