Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Zapytanie złożone do bazy
Forum PHP.pl > Forum > Przedszkole
Laxus
Witam.

Mam problem z ułożeniem zapytania do bazy.

Ułożyłem coś takiego:

  1. SELECT k.id, k.nazwa, k.salaID FROM kontrahenci AS k, sale AS s WHERE k.salaID = s.id


Zapytanie działa prawidłowo. Teraz potrzebuję dodać do niego numer sali (s.numer), tak aby w rezultacie otrzymać nie id sali (k.salaID), tylko właśnie numer sali (s.numer) z rekordu, do którego się to id (s.id) odnosi.

Mam nadzieję, że to co napisałem jest do zrozumienia. Naprawdę ciężko mi się zadaje pytania odnośnie SQLa.
olszam
Dopisz tylko do selecta jeszcze s.numer. a na początku k.salaID nie jest ci potrzebna jeśli nie chcesz jej wyświetlać ważne by w WHERE była.

Jak coś do testów zapytań z pełną bazą danych https://www.w3schools.com/sql/trysql.asp?fi...ysql_select_all oczywiście inne nazwy tabel tam są smile.gif
bostaf
Hej Laxus,

Proponowałbym, żebyś zaczął używać join (i ładne graficzne wyjaśnienie).

  1. SELECT
  2. k.id, k.nazwa, s.numer
  3. FROM kontrahenci AS k
  4. JOIN sale AS s ON k.salaID = s.id
trueblue
WHERE zamiast JOIN nie jest błędem. Optymalizator bazy danych i tak sprowadzi WHERE do JOIN, aby nie wykonywać iloczynu kartezjańskiego.
bostaf
Cytat(trueblue @ 9.08.2017, 09:27:06 ) *
WHERE zamiast JOIN nie jest błędem. Optymalizator bazy danych i tak sprowadzi WHERE do JOIN, aby nie wykonywać iloczynu kartezjańskiego.

Jasne że nie jest. Ale jest bardziej semantyczne i czytelne jak się zacznie robić powiązania między większą ilością tabel.
Laxus
Już rozumiem. Dzięki wszystkim za pomoc.

Tylko mam jeszcze prośbę. Jak już poruszyłem ten temat to czy mógłby mi ktoś napisać przykładowe zapytanie typu INSERT, bo jak znam siebie to znowu będę kombinował, a najszybciej chwytam na przykładach.

Przykładowo jak napisać zapytanie, które doda kontrahenta o nazwie Biedronka z numerem sali 200, tak żeby uzupełnić obie tabele wraz z id w jednym zapytaniu?
mmmmmmm
Cytat(Laxus @ 9.08.2017, 19:37:45 ) *
Przykładowo jak napisać zapytanie, które doda kontrahenta o nazwie Biedronka z numerem sali 200, tak żeby uzupełnić obie tabele wraz z id w jednym zapytaniu?

W MySQL bez triggerów się nie da.
viking
W jednym nie ale możesz wykorzystać zapytanie:

  1. BEGIN;
  2. INSERT INTO sale(numer) VALUES (200);
  3. INSERT INTO kontrahenci (salaID, nazwa) VALUES(LAST_INSERT_ID(), 'Biedronka');
  4. commit;
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.