Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie danych z innej tabeli do właściwej
Forum PHP.pl > Forum > Bazy danych > MySQL
neo1986kk
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...
nospor
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
neo1986kk
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?
nospor
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.
neo1986kk
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
nospor
Czyli już ci działa?

ps: po LEFT JOIN zjadłeś nazwę tabeli...
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.