Zapytanie do bazy


(Inek125) #1

Męczę się z zapytaniem sql: mam dwie tabele

|miejsca|


miejsce_numer

druga tabelka

|miejsca_zarezerwowane|


miejsce_numer

Chce złączyć te dwie tabelki i i sprawdzić czy rekord występuje w obu tabelkach, jeżeli występuje to np jakąś zmienną ustawić na true; Myślałem o Union All i zliczyć przez count. Nie wiem czy dobrze myślę??


(L337 Crew) #2

Hmm jak robiłem relacje pomiędzy polami poszczególnych tabel,

miałem kod w tym stylu:

$query = mysql_fetch_array(mysql_query('SELECT * FROM forum_topics t JOIN forum_posty p JOIN forum_dzialy d WHERE t.topic_id='.$temat_id.' AND p.temat_id = '.$temat_id.' AND d.id = t.forum_id'));

inny przykład:

$query_2 = mysql_fetch_array(mysql_query('SELECT * FROM forum_topics t JOIN forum_posty p WHERE t.forum_id = '.$row['id']));

Przerób sobie to analogicznie do Twojego układu, najlepiej używając od razu count. [EDIT] by było bardziej precyzyjnie, napiszę malutkie objaśnienie - w powyższych przykładach jest widoczne np.

SELECT * from forum_topics t JOIN forum_posty p

Tu następuje przemianowanie nazwy tabeli (założenie aliasu) i późniejsza relacja pomiędzy polami tabel jest dosyć łatwa:

WHERE t.topic_id='.$temat_id.' AND p.temat_id = '.$temat_id.'

t.topic_id ==> forum_topics['topic_id']

p.temat_id ==> forum_posty['temat_id']


(Inek125) #3

Dzięki bardzo za odpowiedź, spróbuje to co napisałeś wykorzystać do swojego projektu :slight_smile:


(Inek125) #4

Nie bardzo mi to idzie wykonałem takie z zapytanie do Postgresa:

SELECT * FROM miejsce LEFT OUTER JOIN miejsca_zarezerwowane on (miejsce.miejsce_numer=miejsca_zarezerwowane.miejsce_numer );

łączy mi to dwie tabele w jedno teraz wystarczyło by żeby dołączona kolumna "miejsce_numer" z tabeli 2 miejsca_zarezerwowane miała inną nazwę, wtedy wystarczyło by porównywać wartości ifem.

Czy jest coś takiego możliwe??


(L337 Crew) #5

Z tego co widzę, to podobnie jak w moich przykładach.

Znalazłem w sieci coś takiego:

SELECT ...

FROM location x0 left outer join riverstat x1

ON x0.lid = x1.lid

WHERE … ;

(Inek125) #6

Dla zobrazowania wygląd wyniku powyższego zapytania

"id_miejsce"|"miejsce_rzad"|"miejsce_numer"|"pozycja"|"id_sali"|"miejsce_rzad"|"miejsce_numer"|"id_miejsca"

1 | 1 | 1 |position | 1 | 1 | 1 | 1

2 | 1 | 2 |position | 1 | 1 | 2 | 2


(Inek125) #7

Dla zobrazowania wygląd wyniku powyższego zapytania

"id_miejsce"|"miejsce_rzad"|"miejsce_numer"|"pozycja"|"id_sali"|"miejsce_rzad"|"miejsce_numer"|"id_miejsca"

1 | 1 | 1 |position | 1 | 1 | 1 | 1

2 | 1 | 2 |position | 1 | 1 | 2 | 2

Teraz chciałbym żeby sprawdzić czy czy miejsce_numer z pierwszej tabeli jest równe miejsce_numer z drugiej tabeli.