Zapytanie SQL

2011-08-25 15:06:15 Post #1 bob

 
Mam takie zapytanie do bazy:
1
2
3
"SELECT rezerwacja_id, ilosc_osob, w_tym_ilosc_dzieci, data_od, data_do, FK_pokoj_id, FK_zamowienie_id  
FROM tb_rezerwacja WHERE ilosc_osob= "ilosc_osob";


Otrzymuję oczywiście wyniki zapytania, jednak FK_pokoj_id oraz FK_zamowienie_id zwraca mi liczby - oczywiscie nic dziwnego jest to logiczne, ale czy jest mozliwosc wydania zapytania, aby zamiast tych liczb byly wyswietlone nazwy, ktore kryja sie pod tymi liczbami?

zalozmy niech tabela pokoj ma wlasnie tylko pokoj_id i nazwe oraz tabela zamownienia zamowienie_id oraz nazwe.

A wiec wynik zwraca mi liczby - klucze obce tych dwoch tabel, a ja chcialbym ich nazwy ...

pozdrawiam,
Rob

2011-08-25 15:11:35 Post #2 nospor

 
Musisz w zapytaniu zrobić LEFT JOIN do tabel, do których odnoszą się Twoje klucze obce

2011-08-25 15:39:00 Post #3 bob

 
chciałem skleić coś takiego ale wtedy on nie zna i tak pola nazwa z tabeli tb_pokoj...

1
2
3
string zapytanie = ("SELECT rezerwacja_id, ilosc_osob, w_tym_ilosc_dzieci, data_od, data_do, FK_pokoj_id, FK_zamowienie_id FROM tb_rezerwacja
 LEFT JOIN tb_pokoj ON tb_pokoj.pokoj_id = tb_rezerwacja.rezerwacja_id WHERE ilosc_osob='" + ilosc_osob + "';");

2011-08-25 15:43:08 Post #4 nospor

 
wiesz co oznacza
SELECT cos1, cos2
?
To oznacza:
daj mi cos1, cos2.

Jak chcesz jeszcze cos3 to musisz to cos3 dopisać do select
SELECT cos1, cos2, cos3

Ty nie dopisałeś i się dziwisz, że cos3 ci nie widzi.

2011-09-04 02:31:26 Post #5 bob

 
przychodzę tym razem z innym pytaniem. Mam dwie tabele, założyłem sobie, że dany rekord z tabeli plain_table może mieć tylko jedno powiązanie z jednym rekordem w tabeli temperature. Wiem jak pobrać wynik, który zwróci mi to aktualną nazwę (temperature_name) z tabeli temperature - powiązanie po podaniu za pomocą parametru nazwy plain. Otrzymam tą nazwę. Zapytanie i strukturę tabel przedstawiłem poniżej. Zależy mi jednak, aby wynik był nieco "inny", otóż chciałbym dodatkowo, abym otrzymał resztę dostępnych nazw z tabeli temperature, dlatego, że chcę zrobić pózniej zdarzenie update, aby możliwe było zmiany aktualnej powiązanej nazwy... Czyli chciałbym, aby pierwsza nazwa była aktualną powiązaną nazwą z tabelą plain_table, a po niej, aby były również wszystkie inne niepowiązane nazwy z tabeli temperature. Czy jest taka możliwość? Jakby takie zapytanie wyglądało? pozdrawiam,
Rob
1
2
("SELECT plain_id, plain_name, FK_temperature_id, temperature.temperature_id, temperature.temperature_name FROM plain_table LEFT JOIN temperature ON temperature.temperature_id = plain_table.FK_temperature_id WHERE plain_name='" + plain_name + "';");


1
2
3
4
5
6
7
8
9
10
11
12

plain_table
------------
plain_id
plian_name
FK_temperature_id

temperature
--------------
temperature_id
temperature_name

2011-09-04 12:54:20 Post #6 nospor

 
W tym wypadku najsewniej będzie chyba drugim zapytaniem pobrać wszystkie rekordy z tabeli temperature

2011-09-04 14:03:34 Post #7 gość_bńb

 
tzn masz na mysli abym zlaczył wyniki dwoch zapytan?

2011-09-04 14:03:42 Post #8 gość_bńb

 
tzn masz na mysli abym zlaczył wyniki dwoch zapytan?

2011-09-04 17:12:37 Post #9 bob

 
no przykladowo mam polaczony rekord (plain_id = 2) polaczony z rekordem z tabeli temperature (temperature_id = 10). Zakladajac ze w tabeli temperature jest 20 rekordow jak uzyskac taki wynik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2            10
               1
               2
               3
               4
               5
               6
               7
               8
               9
               11
                12
                ..
                20

2011-09-04 19:46:18 Post #10 nospor

 
Nie, miałem na myśli byś oddzielnym zapytaniem pobrał rekordy z tabeli temperature

2011-09-05 11:47:49 Post #11 bob

 
ok mam zapytanie wyjmujace wszystkie nazwy z tabeli temperature i drugie zapytanie wyjmujace tylko ten rekord ktory jest powiazany...

Co dalej?

2011-09-05 11:54:01 Post #12 nospor

 
Nie za bardzo rozumiem pytania. Jak to co dalej? Dalej robisz co chciałeś.
Chciałeś miec rekord powiązany - masz.
Chciałeś mieć wszystkie rekrody z tabeli temperature - masz.

Masz wszystko co chciałeś więc w czym teraz jest problem?

Odpowiedz