|
|
||||||
|
#1
|
|
|
|
|
Witam,
Baza danych to MySQL. Dla tabel: CREATE TABLE Plyty ( Id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, Autor TEXT, Tytul TEXT, Kategoria INTEGER ); CREATE TABLE Kategorie ( Id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, Nazwa TEXT ); Mam takie oto zapytanie listujace wszystkie albumy muzyczne w bazie: SELECT Autor, Tytul, Nazwa FROM Plyty INNER JOIN Kategorie ON Plyty.Kategoria = Kategorie.Id; W przypadku braku w tabeli "Kategorie" pozycji o numerze ID zgodnym z "Plyty.Kategorie.Id" (brak takiej kategorii lub zostala usunieta) zapytanie zwroci pusty wiesz dla danej płyty. Chcialbym, aby w takim przypadku zapytanie zwróciło pola "Plyta.Autor", "Plyta.Tytul" oraz pole "Kategorie.Nazwa" ustawione na "brak kategorii". Sytuacja taka ma miejsce, gdy kategoria zostala usunieta przez uzytkownika, natomiast przy tworzeniu wpisu w tabeli Plyty kategoria istniala. Interesuje mnie modyfikacja samego zapytania SELECT z jakims warunkiem IF jesli to jest mozliwe. Nie jestem mocny z baz danych dlatego proszę o poradę. |
|
|
|
#2
|
|
|
|
|
> Mam takie oto zapytanie listujace wszystkie albumy muzyczne w bazie:
> > SELECT Autor, Tytul, Nazwa FROM Plyty INNER JOIN Kategorie ON > Plyty.Kategoria = Kategorie.Id; Wylistuje wszyskie rekordy tylko gdy Kategoria w tabeli Plyty ma odpowiednik w tabeli Kategorie. > W przypadku braku w tabeli "Kategorie" pozycji o numerze ID zgodnym z > "Plyty.Kategorie.Id" (brak takiej kategorii lub zostala usunieta) zapytanie > zwroci pusty wiesz dla danej płyty. Nie zwroci pustego wiersza, chyba ze zastosujes LEFT JOIN zamiast INNER JOIN > Chcialbym, aby w takim przypadku zapytanie zwróciło pola "Plyta.Autor", > "Plyta.Tytul" oraz pole "Kategorie.Nazwa" ustawione na "brak kategorii". SELECT p.Autor, p.Tytul, CASE WHEN k.Nazwa IS NULL THEN 'brak kategorii' ELSE k.Nazwa END CASE AS Kategoria FROM Plyty p LEFT JOIN Kategorie k ON p.Kategoria = k.Id Zamiast CASE mozesz zastosowac IFNULL: SELECT p.Autor, p.Tytul, IFNULL(k.Nazwa, 'brak kategorii') AS Kategoria FROM Plyty p LEFT JOIN Kategorie k ON p.Kategoria = k.Id |
|
#3
|
|
|
|
|
Witam,
Użytkownik "mojeza" <najyer> napisał w wiadomości >> Mam takie oto zapytanie listujace wszystkie albumy muzyczne w bazie: >> >> SELECT Autor, Tytul, Nazwa FROM Plyty INNER JOIN Kategorie ON >> Plyty.Kategoria = Kategorie.Id; >Wylistuje wszyskie rekordy tylko gdy Kategoria w tabeli Plyty ma >odpowiednik w tabeli Kategorie. >> W przypadku braku w tabeli "Kategorie" pozycji o numerze ID zgodnym z >> "Plyty.Kategorie.Id" (brak takiej kategorii lub zostala usunieta) >> zapytanie >> zwroci pusty wiesz dla danej płyty. >Nie zwroci pustego wiersza, chyba ze zastosujes LEFT JOIN zamiast >INNER JOIN >> Chcialbym, aby w takim przypadku zapytanie zwróciło pola "Plyta.Autor", >> "Plyta.Tytul" oraz pole "Kategorie.Nazwa" ustawione na "brak kategorii". >SELECT > p.Autor, > p.Tytul, > CASE > WHEN k.Nazwa IS NULL THEN 'brak kategorii' ELSE k.Nazwa > END CASE AS Kategoria >FROM Plyty p > LEFT JOIN Kategorie k ON p.Kategoria = k.Id >Zamiast CASE mozesz zastosowac IFNULL: >SELECT > p.Autor, > p.Tytul, > IFNULL(k.Nazwa, 'brak kategorii') AS Kategoria >FROM Plyty p > LEFT JOIN Kategorie k ON p.Kategoria = k.Id Super, o to mi wlasnie chodzilo. Dziekuje bardzo i pozdrawiam |
|
|
| Podobne wątki | |
| MySQL SELECT warunek w WHERE Jak napisać warunek: SELECT kolumna1, kolumna2, kolumna3 FROM tabela WHERE kolumna1 <> "0" LIMIT 150 jak napisać warunek WHERE aby wyświetliło wszystko z wyjątkiem... |
|
| [JPA] Join i warunek złączenia Witam Chciałbym wykonać złączenie dwóch encji w JPA, ale pod warunkiem nieco bardziej rozbudowanym niż zwykłe bycie w relacji. Konkretny przykład: mamy tabele: - dostawców... |
|
| JPA i Select z INNER JOIN Witam Probuje wykonac zapytanie Select wraz ze zlaczeniem INNER JOIN na 2 tabelach. Wzor ze strony [..] a zapytanie SQL to: SELECT Deklaracja.IDDeklaracja,... |
|
| różnice w. select z join Cześć. Przypuśćmy, że mam 3 tabele: tab. a (np. 1000 rekordów): - id (primary key) - name (varchar unique) tab. b (np. 1000 rekordów): -id (primary key) |
|
| select, laczenie, warunek - pytanie teoretyczne o wydajnosc Witam mam takie male pytanie, przypuscmy ze mamy dwie tabele tabela1 ID - primary key (inne pola) tabela2 ID - primay key |
|
|
Czasy w strefie GMT. Teraz jest 07:27. | Privacy Policy
|