<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem join</title>
<link>https://forum.pasja-informatyki.pl/tag/join</link>
<description>Powered by Question2Answer</description>
<item>
<title>SQL, łączenie INNER JOIN wartości z wartością w tablicy JSON</title>
<link>https://forum.pasja-informatyki.pl/581862/sql-laczenie-inner-join-wartosci-z-wartoscia-w-tablicy-json</link>
<description>

&lt;p&gt;Cześć, od kilku dni próbuję rozwiązać problem z łączeniem tabel. Otóż jedna z tabel w SQLu (możemy ją nazwać 'events', przechowuje informacje o wydarzeniu, jej dacie, szczegółach itp.) zawiera kolumnę z id&amp;nbsp;klientów, tylko jest ona przechowywana jako tablica JSON. Uczestników dla danego wydarzenia z tabeli 'events' może być &amp;gt;=1 dlatego nie mogę przypisać po prostu do jednego wydarzenia jednego id uczestnika. I teraz mam tabelę 'clients', która przechowuje dane personalne uczestników.&lt;/p&gt;



&lt;p&gt;Pisząc zapytanie wyszukujące konkretne wydarzenie z tabeli 'events' i łącząc je z danymi kilentów z tabeli 'clients'&amp;nbsp;pojawia się problem. INNER JOIN łączy po konkretnej wartości, ale czy da się zrobić, aby wypisało dane wydarzenie, jeśli jakieś id klienta tylko znajduje się w danej tabelce.&lt;/p&gt;



&lt;p&gt;Taki byłby mniej więcej mój tok rozumowania:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT * FROM events INNER JOIN clients ON clients.client_id = events.client_id

lub

SELECT * FROM events INNER JOIN clients ON clients.client_id = IN JSON_ARRAY(events .client_id)
&lt;/pre&gt;



&lt;p&gt;Znalazłem na necie różne funkcje do JSONa&amp;nbsp;typu json_value(), albo openjson(), ale niezbyt rozwiązywały mój problem.&lt;/p&gt;



&lt;p&gt;W teorii mogę wybrać wszystkie wydarzenia które spełniają tam jakieś warunki i w php pobrać kolumnę z tablicą id klientów i&amp;nbsp;za pomocą json_decode() odszyfrować i dać drugie zapytanie z danymi osób&amp;nbsp;po tych wartościach, ale chcę zrobić wyszukiwarkę wydarzeń po imieniu i/lub nazwisku ludzi którzy biorą udział.&lt;/p&gt;



&lt;p&gt;Coś takiego mniej więcej:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT * FROM events INNER JOIN clients (jakieś warunki połączenia) WHERE concat(clients.name, ' ', clients.last_name) LIKE '%$input%';&lt;/pre&gt;



&lt;p&gt;Wiem, że LIKE jest średni do wyszukiwania po tekstach, ale w tej sytuacji jest to nieistotne.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Skracając myśl w wyszukiwarce wpisuję imię i nazwisko osoby, a program wyszukuje mi wydarzenia, na których ten uczestnik był. W wynikach w jednej z komórek, może być np. lista wszystkich uczestników lub coś podobnego.&lt;/p&gt;



&lt;p&gt;Ma ktoś może pomysł jak taki problem rozwiązać?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;PS. funkcja JSON_CONTAINS() działa fajnie, ale tylko w klauzuli WHERE&lt;/p&gt;



&lt;p&gt;PS.2 Ewentualnie jak ktoś ma inny pomysł jak przechowywać kilka wartości do jednego wpisu w bazie&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581862/sql-laczenie-inner-join-wartosci-z-wartoscia-w-tablicy-json</guid>
<pubDate>Fri, 10 Mar 2023 20:09:36 +0000</pubDate>
</item>
<item>
<title>Złączenia - Inner join</title>
<link>https://forum.pasja-informatyki.pl/566258/zlaczenia-inner-join</link>
<description>

&lt;p&gt;Właśnie&amp;nbsp;probuję ogarnąć złączenia i zastanawiam sie jaki jest ich cel. Czy poniższe zapytania nie dadzą nam takich samych wyników?&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
zaputanie 1 

SELECT chlopcy.chlopiec, zabawki.zabawka
	FROM chlopcy
	inner join
	zabawki
	where chlopcy.id_zabawki = zabawki.id_zabawki

Zapytanie 2
	
SELECT chlopcy.chlopiec, zabawki.zabawka
	FROM chlopcy, zabawki
	where chlopcy.id_zabawki = zabawki.id_zabawki&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/566258/zlaczenia-inner-join</guid>
<pubDate>Fri, 13 May 2022 08:00:02 +0000</pubDate>
</item>
<item>
<title>sprawdzenie zawartości ze wszystkimi tabelami</title>
<link>https://forum.pasja-informatyki.pl/552021/sprawdzenie-zawartosci-ze-wszystkimi-tabelami</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
stworzyłem tabelę z 4 kolumnami w której trzymam podstawowe dane o osobie tj. id_osoba, imię, nazwisko i wiek.&lt;br /&gt;
&lt;br /&gt;
Następnie utworzyłem tabelę pracownik, która ma kolumny id_pracownik, stanowisko, pensja, id_osoba oraz tabelę uczeń - kolumny id_uczen, kierunek, stypendium, id_osoba&lt;br /&gt;
&lt;br /&gt;
i teraz chce wyszukać np najstarszą osobę. Wiem jak to zrobić dla dwóch tabel, jednak jak to zrobić z 2+ tabelami? Czy muszę do każdej zrobić oddzielnego join'a czy jest jakaś opcja np &amp;quot;połącz ze wszystkimi tabelami&amp;quot; gdy mam pewność, że ten klucz id_osoba będzie w każdej tabeli?&lt;br /&gt;
&lt;br /&gt;
Zastanawiam się czy mogę jakoś zrobić to od razu w ten sposób, nie chodzi o lenistwo :D ponieważ gdy będę chciał dodać kolejną tabelę np emeryt czy cokolwiek innego to wtedy muszę modyfikować poprzednie zapytanie.</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/552021/sprawdzenie-zawartosci-ze-wszystkimi-tabelami</guid>
<pubDate>Tue, 05 Oct 2021 20:46:18 +0000</pubDate>
</item>
<item>
<title>Inner join, sql</title>
<link>https://forum.pasja-informatyki.pl/540087/inner-join-sql</link>
<description>

&lt;p&gt;Witam! Próbuję pisać zapytania z joinem, ale zbytnio mi to nie wychodzi. Wciąż pokazuje tak błąd:&lt;/p&gt;



&lt;p&gt;&amp;nbsp; Error Code: 1146. Table 'mydb.nazwa_zakładu' doesn't exist&amp;nbsp; &amp;nbsp;&lt;/p&gt;



&lt;p&gt;Ma ktoś jakiś pomysł jak to naprawić?&lt;/p&gt;



&lt;p&gt;Błąd dotyczy punktu 6 który jest praktycznie na samym dole kodu&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
-- MySQL Script generated by MySQL Workbench
-- Tue Apr 20 10:01:30 2021
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `mydb` ;

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Fryzjerzy`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Fryzjerzy` (
  `idFryzjerzy` INT NOT NULL,
  `Imię` VARCHAR(45) NULL,
  `Nazwisko` VARCHAR(45) NULL,
  `Płeć` VARCHAR(45) NULL,
  `Telefon` INT NULL,
  `E-mail` VARCHAR(45) NULL,
  PRIMARY KEY (`idFryzjerzy`))
ENGINE = InnoDB;

INSERT INTO Fryzjerzy VALUES ('1','Jan', 'Kowalski', 'm', '111222333', 'jan.kowalski@o2.pl');
INSERT INTO Fryzjerzy VALUES ('2','Marek', 'Towarek', 'm', '222444666', 'marek.towarek@o2.pl');
INSERT INTO Fryzjerzy VALUES ('3','Magda', 'Maczek', 'k', '123456789', 'magda.maczek@o2.pl');
INSERT INTO Fryzjerzy VALUES ('4','Ola', 'Opona', 'k', '987654321', 'ola.opona@o2.pl');
INSERT INTO Fryzjerzy VALUES ('5','Kamila', 'Ślimak', 'k', '456789123', 'kamila.slimak@o2.pl');
INSERT INTO Fryzjerzy VALUES ('6','Małgorzata', 'Drzewko', 'k', '198365703', 'malgorzata.drzewko@o2.pl');
INSERT INTO Fryzjerzy VALUES ('7','Adam', 'Lampka', 'm', '908596237', 'adam.lampka@o2.pl');
INSERT INTO Fryzjerzy VALUES ('8','Mateusz', 'Mata', 'm', '465912401', 'mateusz.mata@o2.pl');
INSERT INTO Fryzjerzy VALUES ('9','Luna', 'Laguna', 'k', '597374036', 'luna.laguna@o2.pl');
INSERT INTO Fryzjerzy VALUES ('10','Paweł', 'Mruczek', 'm', '777999000', 'pawel.mruczek@o2.pl');

-- -----------------------------------------------------
-- Table `mydb`.`Pracownicy`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Pracownicy` (
  `Nazwa_zakładu` VARCHAR(100) NULL,
  `Miejscowość` VARCHAR(50) NULL,
  `Fryzjerzy_idFryzjerzy` INT NOT NULL,
  PRIMARY KEY (`Fryzjerzy_idFryzjerzy`),
  CONSTRAINT `fk_Pracownicy_Fryzjerzy1`
    FOREIGN KEY (`Fryzjerzy_idFryzjerzy`)
    REFERENCES `mydb`.`Fryzjerzy` (`idFryzjerzy`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

INSERT INTO Pracownicy VALUES ('Zakład fryzjerski pod Różą', 'Białystok', '1');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski pod Różą', 'Białystok', '2');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Atelier', 'Warszawa', '3');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Atelier', 'Warszawa', '4');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Loczki', 'Olsztyn', '5');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Loczki', 'Olsztyn', '6');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Uczesani', 'Lublin', '7');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Uczesani', 'Lublin', '8');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Szalone nożyczki', 'Siemiatycze', '9');
INSERT INTO Pracownicy VALUES ('Zakład fryzjerski Szalone nożyczki', 'Siemiatycze', '10');


-- -----------------------------------------------------
-- Table `mydb`.`Miejsce_wizyty`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Miejsce_wizyty` (
  `idMiejsce` INT NOT NULL,
  `NazwaZakładuFryzjerskiego` VARCHAR(45) NULL,
  `Miejscowość` VARCHAR(45) NULL,
  `Ulica` VARCHAR(45) NULL,
  `KodPocztowy` VARCHAR(10) NULL,
  PRIMARY KEY (`idMiejsce`))
ENGINE = InnoDB;

INSERT INTO Miejsce_wizyty VALUES ('1','Zakład fryzjerski pod Różą', 'Białystok', 'Fryzjerska 6', '15-003');
INSERT INTO Miejsce_wizyty VALUES ('2','Zakład fryzjerski Atelier', 'Warszawa', 'Miodowa 34', '01-015');
INSERT INTO Miejsce_wizyty VALUES ('3','Zakład fryzjerski Loczki', 'Olsztyn', 'Piernikowa 10', '10-004');
INSERT INTO Miejsce_wizyty VALUES ('4','Zakład fryzjerski Uczesani', 'Lublin', 'Mleczna 28', '20-120');
INSERT INTO Miejsce_wizyty VALUES ('5','Zakład fryzjerski Szalone nożyczki', 'Siemiatycze', 'Kolorowa 99', '17-300');


-- -----------------------------------------------------
-- Table `mydb`.`Cennik`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Cennik` (
  `idCena` INT NOT NULL,
  `Cena`  VARCHAR(45) NULL,
  PRIMARY KEY (`idCena`))
ENGINE = InnoDB;

INSERT INTO Cennik VALUES ('1','15zł');
INSERT INTO Cennik VALUES ('2','30zł');
INSERT INTO Cennik VALUES ('3','100zł');
INSERT INTO Cennik VALUES ('4','500zł');
INSERT INTO Cennik VALUES ('5','50zł');
INSERT INTO Cennik VALUES ('6','200zł');
INSERT INTO Cennik VALUES ('7','90zł');

-- -----------------------------------------------------
-- Table `mydb`.`Typ_wizyty`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Typ_wizyty` (
  `idTypWizyty` INT NOT NULL,
  `Nazwa` VARCHAR(45) NULL,
  `CzasWizytyWPrzybliżeniu`  VARCHAR(45) NULL,
  `Cennik_idCena` INT NOT NULL,
  PRIMARY KEY (`idTypWizyty`, `Cennik_idCena`),
  INDEX `fk_Typ_wizyty_Cennik1_idx` (`Cennik_idCena` ASC),
  CONSTRAINT `fk_Typ_wizyty_Cennik1`
    FOREIGN KEY (`Cennik_idCena`)
    REFERENCES `mydb`.`Cennik` (`idCena`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

INSERT INTO Typ_wizyty VALUES ('1','Szybkie cięcie', '15min', '1');
INSERT INTO Typ_wizyty VALUES ('2','Cięcie normalne', '20min', '2');
INSERT INTO Typ_wizyty VALUES ('3','Ułożenie włosów', '120min', ' 3');
INSERT INTO Typ_wizyty VALUES ('4','Keratynowe prostowanie włosów', '300min', '4');
INSERT INTO Typ_wizyty VALUES ('5','Grzywka', '25min', '5');
INSERT INTO Typ_wizyty VALUES ('6','Farbowanie włosów', '150min', '6');
INSERT INTO Typ_wizyty VALUES ('7','Loki', '100 min', '7');


-- -----------------------------------------------------
-- Table `mydb`.`Godzina_wizyt`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Godzina_wizyt` (
  `idGodzina` INT NOT NULL,
  `Godzina` VARCHAR(45) NULL,
  PRIMARY KEY (`idGodzina`))
ENGINE = InnoDB;

INSERT INTO Godzina_wizyt VALUES ('1','8:00');
INSERT INTO Godzina_wizyt VALUES ('2','9:00');
INSERT INTO Godzina_wizyt VALUES ('3','10:00');
INSERT INTO Godzina_wizyt VALUES ('4','11:00');
INSERT INTO Godzina_wizyt VALUES ('5','12:00');
INSERT INTO Godzina_wizyt VALUES ('6','13:00');
INSERT INTO Godzina_wizyt VALUES ('7','14:00');
INSERT INTO Godzina_wizyt VALUES ('8','15:00');
INSERT INTO Godzina_wizyt VALUES ('9','16:00');
INSERT INTO Godzina_wizyt VALUES ('10','17:00');


-- -----------------------------------------------------
-- Table `mydb`.`Klienci`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Klienci` (
  `idKlienci` INT NOT NULL,
  `Imię` VARCHAR(45) NULL,
  `Nazwisko` VARCHAR(45) NULL,
  `Płeć` VARCHAR(45) NULL,
  `Telefon` INT NULL,
  `E-mail` VARCHAR(45) NULL,
  `Data_zaplanowanej_wizyty` VARCHAR(45) NULL,
  `Miejsce_wizyty_idMiejsce` INT NOT NULL,
  `Typ_wizyty_idTypWizyty` INT NOT NULL,
  `Godzina_wizyt_idGodzina` INT NOT NULL,
  `Fryzjerzy_idFryzjerzy` INT NOT NULL,
  PRIMARY KEY (`Miejsce_wizyty_idMiejsce`, `Typ_wizyty_idTypWizyty`, `Godzina_wizyt_idGodzina`, `Fryzjerzy_idFryzjerzy`, `idKlienci`),
  INDEX `fk_Klienci_Typ_wizyty1_idx` (`Typ_wizyty_idTypWizyty` ASC),
  INDEX `fk_Klienci_Godzina_wizyt1_idx` (`Godzina_wizyt_idGodzina` ASC),
  INDEX `fk_Klienci_Fryzjerzy1_idx` (`Fryzjerzy_idFryzjerzy` ASC),
  CONSTRAINT `fk_Klienci_Miejsce_wizyty`
    FOREIGN KEY (`Miejsce_wizyty_idMiejsce`)
    REFERENCES `mydb`.`Miejsce_wizyty` (`idMiejsce`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Klienci_Typ_wizyty1`
    FOREIGN KEY (`Typ_wizyty_idTypWizyty`)
    REFERENCES `mydb`.`Typ_wizyty` (`idTypWizyty`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Klienci_Godzina_wizyt1`
    FOREIGN KEY (`Godzina_wizyt_idGodzina`)
    REFERENCES `mydb`.`Godzina_wizyt` (`idGodzina`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Klienci_Fryzjerzy1`
    FOREIGN KEY (`Fryzjerzy_idFryzjerzy`)
    REFERENCES `mydb`.`Fryzjerzy` (`idFryzjerzy`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

INSERT INTO Klienci VALUES ('1','Joanna', 'Ziemniak', 'k', '537674607', 'joanna.ziemniak@o2.pl', '25.05.2021','1','2','1','1');
INSERT INTO Klienci VALUES ('2','Karol', 'Nowak', 'm', '887653178', 'karol.nowak@o2.pl', '25.05.2021','1','1','2','2');
INSERT INTO Klienci VALUES ('3','Bartosz', 'Wójcik', 'm', '664302003', 'bartosz.wojcik@o2.pl', '26.05.2021','2','6','3','3');
INSERT INTO Klienci VALUES ('4','Zuzanna', 'Kamińska', 'k', '697135173', 'zuzanna.kaminska@o2.pl', '26.05.2021','2','5','2','4');
INSERT INTO Klienci VALUES ('5','Dagmar', 'Ważniak', 'm', '537734779', 'dagmar.wazniak@o2.pl', '27.05.2021','3','1','3','5');
INSERT INTO Klienci VALUES ('6','Patrycja', 'Dziuba', 'k', '294471093', 'patrycja.dziuba@o2.pl', '27.05.2021','3','2','1','6');
INSERT INTO Klienci VALUES ('7','Michał', 'Zych', 'm', '693293546', 'michal.zych@o2.pl', '28.05.2021','4','6','4','7');
INSERT INTO Klienci VALUES ('8','Anna', 'Półtorak', 'k', '721393277', 'anna.poltorak@o2.pl', '28.05.2021','4','3','1','8');
INSERT INTO Klienci VALUES ('9','Piotr', 'Michaluk', 'm', '534632562', 'piotr.michaluk@o2.pl', '29.05.2021','5','2','4','9');
INSERT INTO Klienci VALUES ('10','Ewa', 'Dobrogowska', 'k', '519865480', 'ewa.dobrogowska@o2.pl', '29.05.2021','5','7','1','10');
INSERT INTO Klienci VALUES ('11','Sebastian', 'Radziszewski', 'm', '511721002', 'sebastian.radziszewski@o2.pl', '30.05.2021','1','1','5','1');
INSERT INTO Klienci VALUES ('12','Urszula', 'Rutkowska', 'k', '720819928', 'urszula.rutkowska@o2.pl', '30.05.2021','1','4','9','2');
INSERT INTO Klienci VALUES ('13','Aleksander', 'Czarkowski', 'm', '788376583', 'aleksander.czarkowski@o2.pl', '31.05.2021','2','6','6','3');
INSERT INTO Klienci VALUES ('14','Zofia', 'Karpiuk', 'k', '555555555', 'zofia.karpiuk@o2.pl', '31.05.2021','2','2','7','4');
INSERT INTO Klienci VALUES ('15','Patryk', 'Kasperuk', 'm', '121212121', 'patryk.kasperuk@o2.pl', '01.06.2021','3','1','9','5');
INSERT INTO Klienci VALUES ('16','Lena', 'Kwiatkowska', 'k', '090807063', 'lena.kwiatkowska@o2.pl', '01.06.2021','3','7','7','6');
INSERT INTO Klienci VALUES ('17','Krzysztof', 'Moczulski', 'm', '908456103', 'krzysztof.moczulski@o2.pl', '02.06.2021','4','3','9','7');
INSERT INTO Klienci VALUES ('18','Weronika', 'Lubowicka', 'k', '400001023', 'weronika.lubowicka@o2.pl', '02.06.2021','4','2','7','8');
INSERT INTO Klienci VALUES ('19','Krystian', 'Bajena', 'm', '596105809', 'krystian.bajena@o2.pl', '03.06.2021','5','2','10','9');
INSERT INTO Klienci VALUES ('20','Katarzyna', 'Konstanciuk', 'k', '712374643', 'katarzyna.konstanciuk@o2.pl', '03.06.2021','5','3','6','10');

-- -----------------------------------------------------
-- Table `mydb`.`Tabelka logi`
-- -----------------------------------------------------
  create table log(
 id int auto_increment,
 czas datetime,
 akcja varchar(23),
 primary key (id) 
 );
 
-- -----------------------------------------------------
-- Table `mydb`.`Trigger logi`
-- -----------------------------------------------------

 create trigger dodawanko before delete on log  for each row 
 insert into log values (NULL,now(),&quot;Insert do tabeli log&quot;);

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

-- -----------------------------------------------------
-- Zapytanka
-- -----------------------------------------------------
-- 1
Select * from Cennik where Cena&amp;lt;200;
-- 2
Select * from Miejsce_wizyty where Miejscowość = 'Białystok';
-- 3
Select Imię, Nazwisko from Klienci where Imię like '%n%' and Płeć like 'k%' 
Order by Imię;
-- 4
Select Max(CzasWizytyWPrzybliżeniu) as Najdłuższa_wizyta from Typ_wizyty;
-- 5
Select Imię, Nazwisko, Płeć, Telefon from Fryzjerzy where idFryzjerzy between 3 and 9 
Order by Nazwisko;
-- 6
SELECT idFryzjerzy, Nazwa_zakładu
  FROM Fryzjerzy INNER JOIN Nazwa_zakładu
             ON Fryzjerzy.idFryzjerzy = Pracownicy.Nazwa_zakładu;
-- 7&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/540087/inner-join-sql</guid>
<pubDate>Wed, 05 May 2021 11:57:17 +0000</pubDate>
</item>
<item>
<title>SQL JOIN wartość tylko jeden raz</title>
<link>https://forum.pasja-informatyki.pl/539106/sql-join-wartosc-tylko-jeden-raz</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
czy da się zrobić jakoś zapytanie w SQL gdzie przy łączeniu tabel za pomocą JOIN przypisuje tylko raz wartość do danego rekordu&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Mam namyśli takie rozwiązanie gdzie mam klika rekordów z powtarzającymi się datami i żeby przy łączeniu przypisać w nowej kolumnie wartość tylko w przypadku wystąpienia daty pierwszy raz pozostałe te same daty żeby otrzymały wartość NULL</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/539106/sql-join-wartosc-tylko-jeden-raz</guid>
<pubDate>Mon, 26 Apr 2021 14:08:46 +0000</pubDate>
</item>
<item>
<title>Maksymalne rekordy w kwerendzie zagnieżdżonej</title>
<link>https://forum.pasja-informatyki.pl/526092/maksymalne-rekordy-w-kwerendzie-zagniezdzonej</link>
<description>

&lt;p&gt;Witam, mam taką bazę danych&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=17036617894431474117&quot; style=&quot;height:418px; width:439px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Próbuje wyświetlić najwyższe góry w danych pasmach, tj. do czasu kiedy nie dołączam do zapytania wyświetlającego najwyższe góry tabeli pasma wszystko jest OK,&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT gora, max(wysokosc) FROM gory GROUP BY gora ORDER BY wysokosc DESC LIMIT 7;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;w momencie połączenia i pogrupowania po paśmie&lt;/p&gt;



&lt;pre class=&quot;ipsCode prettyprint lang-html prettyprinted&quot;&gt;
SELECT gora, max(wysokosc), pasma.pasmo FROM gory JOIN pasma ON gory.id_pasmo=pasma.id_pasmo GROUP BY pasma.pasmo ORDER BY wysokosc DESC LIMIT 7;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;pokazuje najwyższe góry, ale złe nazwy tych gór&lt;/p&gt;



&lt;p&gt;​&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/526092/maksymalne-rekordy-w-kwerendzie-zagniezdzonej</guid>
<pubDate>Wed, 20 Jan 2021 11:37:30 +0000</pubDate>
</item>
<item>
<title>Wykluczenie powtarzających się rekordów</title>
<link>https://forum.pasja-informatyki.pl/523555/wykluczenie-powtarzajacych-sie-rekordow</link>
<description>

&lt;p&gt;Witajcie!
&lt;br&gt;
Tworząc swój serwis napotkałem na problem powtarzających się rekordów.
&lt;br&gt;
Mając do dyspozycji jedynie id_pracodawcy z tabeli oferty powinienem otrzymałem takie dane:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT logowanie.id_usera, logowanie.imie, logowanie.nazwisko FROM logowanie JOIN aplikacje on logowanie.id_usera=aplikacje.id_uzytkownika JOIN oferty ON aplikacje.id_oferty=oferty.id WHERE oferty.pracodawca=39&lt;/pre&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=8333883148101515656&quot; style=&quot;height:126px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Widać tutaj że dane się powtarzają, nie wiem w którym momencie jest błąd.
&lt;br&gt;
Krótki opis:
&lt;br&gt;
-tabela oferty zawiera informacje na temat dodanych ofert, wśród nich jest ID pracodawcy &amp;lt;- który dodał ofertę.
&lt;br&gt;
-tabela aplikacje zawiera id_oferty oraz id_uzytkownika
&lt;br&gt;
-tabela logowanie zawiera informacje o uzytkownikach pracodawcach&lt;/p&gt;



&lt;p&gt;zarys:&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=9009445929859444880&quot; style=&quot;height:308px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Chciałbym uzyskać dane (imie nazwisko i id_usera z tabeli logowanie) o użytkownikach którzy aplikowali do danej oferty.&lt;/p&gt;



&lt;p&gt;Konkretniej: pracodawca o id 39 jest autorem oferty nr 33.
&lt;br&gt;
W tabeli aplikacje są 3 takie rekordy (id oferty: 33 id_uzytkownika 64) i kolejno: (id oferty: 33 id_uzytkownika 65) (id oferty: 33 id_uzytkownika 69)
&lt;br&gt;
I połączenie z tabelą logowanie aby wydrukować imię i nazwisko oraz id_usera.&lt;/p&gt;



&lt;p&gt;Proszę o wskazanie co mam poprawić aby ta kwerenda zadziałała tak jak powinna.
&lt;br&gt;
Dziękuję&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/523555/wykluczenie-powtarzajacych-sie-rekordow</guid>
<pubDate>Mon, 04 Jan 2021 10:21:32 +0000</pubDate>
</item>
<item>
<title>SQL zsumowanie dwóch wierszy</title>
<link>https://forum.pasja-informatyki.pl/501428/sql-zsumowanie-dwoch-wierszy</link>
<description>

&lt;p&gt;Dzień dobry&lt;/p&gt;



&lt;p&gt;Mam między innymi trzy takie tabele w bazie danych MySQL (ten przedrostek exc_ dodałem do nazw żeby sobie oznaczyć że to własna baza do ćwiczeń, bo na tym samym serwie mam też bazę z aplikacji którą sobie piszę dla nauki):&amp;nbsp;&amp;nbsp;&amp;nbsp; //BAZA na zdjęciu&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=9500833202059766739&quot; style=&quot;height:392px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Chciałbym zrobić zapytanie, które pobierze dane z trzech tabel, ma wyznaczyć wartość każdego zamówienia i podać jego dane (id i datę oraz łączną wartość zamówienia)&lt;/p&gt;



&lt;p&gt;Na razie mam takie zapytanie:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT od.fk_id_order, ROUND(p.price * od.amount, 2) AS total_product_price FROM exc_Products AS p JOIN exc_OrderDetails AS od ON p.id_product = od.fk_id_product;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Z tabeli produktów pobieram cenę, JOINem podpinam się pod tabelę dot. szczegółów zamówień, mnożę cenę razy ilość produktów.&lt;/p&gt;



&lt;p&gt;Przykładowe wyniki:&lt;/p&gt;



&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;fk_id_order&lt;/td&gt;
			

&lt;td&gt;total_product_price&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;24.99&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;24.95&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;2&lt;/td&gt;
			

&lt;td&gt;13.59&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;i tak dalej....&lt;/p&gt;



&lt;p&gt;Chciałbym teraz zsumować żeby mieć łączną wartość kolumny 'total_product_price' dla każdego fk_id_order, zwykłe GROUP BY nie działa, kombinowałem z podzapytaniem ale nie działa :/&lt;/p&gt;



&lt;p&gt;Czy ktoś mógłby mi pomóc?&lt;/p&gt;



&lt;p&gt;Na koniec będę musiał jeszcze chyba kolejnego JOINa zrobić do tabeli exc_Orders żeby datę pobrać, ale to sobie raczej poradzę&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;PS: przepraszam za pseudo-schemat tabelek narysowany w paincie&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/501428/sql-zsumowanie-dwoch-wierszy</guid>
<pubDate>Mon, 27 Jul 2020 20:17:22 +0000</pubDate>
</item>
<item>
<title>Wyszukiwanie przez mysql</title>
<link>https://forum.pasja-informatyki.pl/450273/wyszukiwanie-przez-mysql</link>
<description>

&lt;p&gt;Cześć, robię wyszukiwarkę w PHP i chciałbym, żeby po wpisaniu przez użytkownika wartości przeszukało bazę i gdy w bazie występuje dane słowo to zwróciło cały rekord. np:
&lt;br&gt;

&lt;br&gt;
PRODUKTY:&lt;/p&gt;



&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;&lt;strong&gt;id&lt;/strong&gt;&lt;/td&gt;
			

&lt;td&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;Rozek&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;2&lt;/td&gt;
			

&lt;td&gt;Lód&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;PRODUCENCI:&lt;/p&gt;



&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;&lt;strong&gt;id&lt;/strong&gt;&lt;/td&gt;
			

&lt;td&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;Coral&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;2&lt;/td&gt;
			

&lt;td&gt;Philips&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;
&lt;br&gt;
DOSTEPNE&lt;/p&gt;



&lt;p&gt;&amp;nbsp;
&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;id&lt;/td&gt;
			

&lt;td&gt;producent&lt;/td&gt;
			

&lt;td&gt;produkt&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;1&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;2&lt;/td&gt;
			

&lt;td&gt;1&lt;/td&gt;
			

&lt;td&gt;2&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;br&gt;
chciałbym, żeby uzytkownik po wpisaniu 'Coral' bladź 'lód'/'rozek' wyswietlily mu sie dwa rekordy.



&lt;p&gt;&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;Moje zapytanie w projekcie wygląda tak:
&lt;br&gt;

&lt;br&gt;
SELECT * FROM products as p, producers as pr, avaliable as a&amp;nbsp;WHERE a.producer = pr.id&amp;nbsp;AND a.product = p.id AND p.name LIKE '%coral%' OR pr.name LIKE '%coral%'
&lt;br&gt;

&lt;br&gt;
Nie działa tak jak powinno, wyświetlają się wszystkie rekordy, za to gdy zapytanie jest bez &quot;OR&quot; wszystko działa prawidłowo:
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;




&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT * FROM products as p, producers as pr, avaliable as a&amp;nbsp;WHERE a.producer = pr.id&amp;nbsp;AND a.product = p.id AND p.name LIKE '%coral%' &lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/450273/wyszukiwanie-przez-mysql</guid>
<pubDate>Fri, 20 Sep 2019 13:03:35 +0000</pubDate>
</item>
<item>
<title>sumowanie rekordów z dwóch tabel dla wszystkich userów</title>
<link>https://forum.pasja-informatyki.pl/349421/sumowanie-rekordow-z-dwoch-tabel-dla-wszystkich-userow</link>
<description>Witam, mam taki problem.. nie wiem jak zsumować wyniki z jednej tabeli dla konkretnego id&lt;br /&gt;
&lt;br /&gt;
Chciałbym mieć listę użytkowników i przypisanych punktów do nich coś na zasadzie&lt;br /&gt;
&lt;br /&gt;
Adam 345&lt;br /&gt;
&lt;br /&gt;
Robert 200&lt;br /&gt;
&lt;br /&gt;
Arek 543&lt;br /&gt;
&lt;br /&gt;
Monika 123&lt;br /&gt;
&lt;br /&gt;
...itd&lt;br /&gt;
&lt;br /&gt;
mam pierwszą tabele z punktami przypisanymi do ID_USERS(to id to id użykownikami z tabeli USERS tzn Adam ma id 23)&lt;br /&gt;
&lt;br /&gt;
ID | ID_USERS | POINTS &amp;nbsp;&amp;nbsp;(to jest tabela &amp;quot;POINTS&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
1 | 23 | 3&lt;br /&gt;
&lt;br /&gt;
2 | 222 | 2&lt;br /&gt;
&lt;br /&gt;
3 | 100| 5&lt;br /&gt;
&lt;br /&gt;
4 | 23 | 3&lt;br /&gt;
&lt;br /&gt;
5 | 23 | 2&lt;br /&gt;
&lt;br /&gt;
6 | 23 | 5&lt;br /&gt;
&lt;br /&gt;
7 | 23 | 3&lt;br /&gt;
&lt;br /&gt;
8 | 100 | 2&lt;br /&gt;
&lt;br /&gt;
9 | 23| 0&lt;br /&gt;
&lt;br /&gt;
10 | 222 | 3&lt;br /&gt;
&lt;br /&gt;
11 | 100 | 2&lt;br /&gt;
&lt;br /&gt;
12 | 23 | 5&lt;br /&gt;
&lt;br /&gt;
13 | 23 | 3&lt;br /&gt;
&lt;br /&gt;
14 | 222 | 0&lt;br /&gt;
&lt;br /&gt;
15 | 100 | 5&lt;br /&gt;
&lt;br /&gt;
i drugą tabele uzytkowników:&lt;br /&gt;
&lt;br /&gt;
ID | NAME | (to jest tabela &amp;quot;USERS&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
23 | Adam |&lt;br /&gt;
&lt;br /&gt;
100 | Monika |&lt;br /&gt;
&lt;br /&gt;
222 | Robert |&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Chciałbym w wyniku uzyskać dla każdego Imienia sumę wszystkich punktów&lt;br /&gt;
&lt;br /&gt;
Proszę o pomoc bo główkuję już 2 dni:(</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/349421/sumowanie-rekordow-z-dwoch-tabel-dla-wszystkich-userow</guid>
<pubDate>Thu, 10 May 2018 05:58:33 +0000</pubDate>
</item>
<item>
<title>zapytanie SQL z inner join?</title>
<link>https://forum.pasja-informatyki.pl/342525/zapytanie-sql-z-inner-join</link>
<description>Witam, mam 3 tabele:&lt;br /&gt;
&lt;br /&gt;
item: idItem | title | data ...&lt;br /&gt;
&lt;br /&gt;
tags: idTag | name&lt;br /&gt;
&lt;br /&gt;
itemtags: idItem | idTag&lt;br /&gt;
&lt;br /&gt;
Chciałbym móc na podstawie wybranego tagu - powiedzmy, że jest to tag o nazwie &amp;quot;java&amp;quot;, móc wyświetlić wszystkie item, które go posiadają. Nic trudnego i działa to bardzo dobrze, jednak chciałbym aby zwrócone elementy miały również w wyniku wszystkie przypisane do niego tagi np.:&lt;br /&gt;
&lt;br /&gt;
data, title, tagJava, tag2, tag3...</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/342525/zapytanie-sql-z-inner-join</guid>
<pubDate>Wed, 11 Apr 2018 18:27:45 +0000</pubDate>
</item>
<item>
<title>Zapytanie do 2 tabel</title>
<link>https://forum.pasja-informatyki.pl/323356/zapytanie-do-2-tabel</link>
<description>

&lt;p&gt;Borykam się z pewnym problemem. Mam dwie tabele i nie mogę osiągnąć zadowalającego z efektu. Tabele:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
kolor:
+------------+----------------+
| id_kol     | int(11)        | // ID
| ral        | int(4)         | // ID koloru
| k_hex      | tinytext       | 
| k_rgb      | tinytext       |
+------------+----------------+
alterna:
+------------+----------------+
| id_alt     | int(11)        | // ID
| color      | int(4)         | // ID koloru z poprzedniej tabeli
| alternativ | tinytext       | // wartość
| a_range    | enum('0', '1') | // 0 - NCS, 1 - Pantone
| a_rating   | int(1)         | // wartość
+------------+----------------+&lt;/pre&gt;



&lt;p&gt;Chciałbym uzyskać taki efekt:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
+---------+-------------+
|     ral |  1111       | // kolor z pierwszej tabeli
|     ncs | 2020-Y **   | // alternatywny z drugiej tabeli (a_range=0, a_rating=2)
|         | 2020-G90Y * | // alternatywny z drugiej tabeli (a_range=0, a_rating=1)
| pantone | 5855 C ***  | // alternatywny z drugiej tabeli (a_range=1, a_rating=3)
|         | 4535 C **   | // alternatywny z drugiej tabeli (a_range=1, a_rating=2)
|         | 7502 C *    | // alternatywny z drugiej tabeli (a_range=1, a_rating=1)
+---------+-------------+&lt;/pre&gt;



&lt;p&gt;Moje zapytanie do bani:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT * 
FROM kolor 
LEFT JOIN alterna AS c1 ON kolor.id_kol=c1.color AND c1.a_range='0'
LEFT JOIN alterna AS c2 ON kolor.id_kol=c2.color AND c2.a_range='1'&lt;/pre&gt;



&lt;p&gt;Nie umiem pozbyć się duplikatów...&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/323356/zapytanie-do-2-tabel</guid>
<pubDate>Thu, 01 Feb 2018 20:46:32 +0000</pubDate>
</item>
<item>
<title>Zapytanie SQL - złączenie tabel</title>
<link>https://forum.pasja-informatyki.pl/319112/zapytanie-sql-zlaczenie-tabel</link>
<description>

&lt;p&gt;Cześć!&lt;/p&gt;



&lt;p&gt;Chciałbym zapytać czy jest jakaś znacząca&amp;nbsp;różnica między takim zapytaniem:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT Tab1.Atr1, Tab2.Atr2 FROM Tab1, Tab2 WHERE Tab1.Id=Tab2.Id&lt;/pre&gt;



&lt;p&gt;a takim?:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT Tab1.Atr1, Tab2.Atr2 FROM Tab1 INNER JOIN Tab2 ON Tab1.Id=Tab2.Id&lt;/pre&gt;



&lt;p&gt;Pytam o to, ponieważ zawsze miałem w zwyczaju używać tej pierwszej formy (chyba bardziej zapadła mi w pamięć), lecz&amp;nbsp;ostatnio przypomniałem sobie o tym że istnieją JOIN'y i teraz mam wątpliwości która forma jest bardziej poprawna.&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/319112/zapytanie-sql-zlaczenie-tabel</guid>
<pubDate>Tue, 16 Jan 2018 18:01:59 +0000</pubDate>
</item>
<item>
<title>Jak wyświetlić imię danego pracownika??</title>
<link>https://forum.pasja-informatyki.pl/261523/jak-wyswietlic-imie-danego-pracownika</link>
<description>

&lt;p&gt;Witam chce wyświetlić imie i nazwisko pracowników i ilość wykonanych przez niego transakcji.&lt;/p&gt;



&lt;p&gt;Próbowałem to zrobić i narazie mam takie co :&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
select p.ID_PRACOWNIKA,count(t.ID_PRACOWNIKA) 
from  TRANSAKCJA t
inner JOIN PRACOWNIK p on t.ID_PRACOWNIKA =p.ID_PRACOWNIKA GROUP by p.ID_PRACOWNIKA;


&lt;/pre&gt;



&lt;p&gt;Wsyztsko jest ok ale gdy próbuje dopisać p.imie to &amp;nbsp;wywala&amp;nbsp;ze nie jest to wyrażenie GROUP BY&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/261523/jak-wyswietlic-imie-danego-pracownika</guid>
<pubDate>Sun, 11 Jun 2017 20:48:41 +0000</pubDate>
</item>
<item>
<title>Bardziej optymalne rozwiązanie MYSQL/PHP.</title>
<link>https://forum.pasja-informatyki.pl/208146/bardziej-optymalne-rozwiazanie-mysql-php</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
Mam dwie tabele, z których potrzebuję pobrać kilka rekordów, tak aby dla jednego rekordu z tabeli A przypadał jeden z B. Problem jest taki, że dla jednego rekordu z tabeli A przypada kilka z tabeli B, żaden JOIN nie pomaga, ani nie mogę użyć LIMIT dla JOINa.&lt;br /&gt;
&lt;br /&gt;
Wpadłem na dwa pomysły:&lt;br /&gt;
1) Pobrać za pomocą JOINa zbyt dużą ilość rekordów i wywalić niepotrzebne przy pobieraniu ich w pętli PHP. Średnio będzie pobierać gdzieś 16 rekordów z tabeli A, a do każdego z nich do maksymalnie 5 rekordów z tabeli B.&lt;br /&gt;
2) Pobrać rekordy z tabeli A i podczas ich pobierania pobrać pasujący rekord z tabeli B.&lt;br /&gt;
&lt;br /&gt;
Problematyka pierwszego - za duża ilość rekordów.&lt;br /&gt;
Problematyka drugiego - za duża ilość zapytań.&lt;br /&gt;
&lt;br /&gt;
Która z opcji jest bardziej optymalna? Obstawiam pierwszą, ale nie wiem czy się mylę. A może jest jeszcze inne, lepsze rozwiązanie?</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/208146/bardziej-optymalne-rozwiazanie-mysql-php</guid>
<pubDate>Thu, 22 Dec 2016 14:45:24 +0000</pubDate>
</item>
<item>
<title>Postgres Update Inner Join</title>
<link>https://forum.pasja-informatyki.pl/162049/postgres-update-inner-join</link>
<description>

&lt;p&gt;Cześć.&lt;/p&gt;



&lt;p&gt;Mam w Pgadminie dwie tabele połączone kluczem obcym id=id_2.&lt;/p&gt;



&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;id&lt;/td&gt;
			

&lt;td&gt;value&lt;/td&gt;
			

&lt;td&gt;bool&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:500px&quot;&gt;
	

&lt;tbody&gt;
		

&lt;tr&gt;
			

&lt;td&gt;id_2&lt;/td&gt;
			

&lt;td&gt;details&lt;/td&gt;
			

&lt;td&gt;access&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
		&lt;/tr&gt;
		

&lt;tr&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
			

&lt;td&gt;..&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;W pierwszej tabeli jest dużo rekordów. W drugiej mniej. Jaka kwerenda zmieni &quot;Pierwsza&quot;.&quot;bool&quot; na TRUE tylko dla tych rekordów których id występuje w drugiej tabeli? Próbowałem tak ale nie działa...&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
UPDATE &quot;Pierwsza&quot; AS &quot;P&quot;
SET &quot;bool&quot;=true
FROM &quot;Druga&quot; as &quot;D&quot;
WHERE &quot;Druga&quot;.&quot;details&quot; &amp;lt;&amp;gt; '';
-- &quot;details&quot; ma &quot;not null&quot;&lt;/pre&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
UPDATE &quot;Pierwsza&quot;
SET bool=false 
FROM (
	SELECT *
	FROM &quot;Druga&quot;
	RIGHT JOIN &quot;Pierwsza&quot;
	ON &quot;Druga&quot;.&quot;id_2&quot;=&quot;Pierwsza&quot;.&quot;id&quot;
) &quot;X&quot;
WHERE &quot;X&quot;.&quot;details&quot; NOTNULL;&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/162049/postgres-update-inner-join</guid>
<pubDate>Tue, 26 Jul 2016 17:59:16 +0000</pubDate>
</item>
<item>
<title>Problem z LEFT JOIN</title>
<link>https://forum.pasja-informatyki.pl/156247/problem-z-left-join</link>
<description>

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

namespace TransportBundle\Repository;

/**
 * TransportRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TransportRepository extends \Doctrine\ORM\EntityRepository
{
  public function findAll() {
    return $this-&amp;gt;getEntityManager()
      -&amp;gt;createQuery('SELECT t FROM TransportBundle:Transport t ORDER BY t.id ASC')
      -&amp;gt;getResult();
  }

  public function findNotActivated() {
    return $this-&amp;gt;getEntityManager()
      -&amp;gt;createQuery('SELECT t FROM TransportBundle:Transport t LEFT JOIN UserBundle:User u WITH t.damage = u.avatar WHERE t.userName = u.username')
      -&amp;gt;getResult();
  }
}
&lt;/pre&gt;



&lt;p&gt;Chodzi mi o funkcję &lt;strong&gt;findNotActivated&lt;/strong&gt;, chciałbym zrobić tak aby w obiekcie &lt;strong&gt;t&lt;/strong&gt; zmieniło &lt;strong&gt;t.id&lt;/strong&gt; na &lt;strong&gt;u.avatar&lt;/strong&gt;&amp;nbsp;a u.avatar ma pobierać z &lt;strong&gt;UserBundle:User&lt;/strong&gt; od użytkownika gdzie&amp;nbsp;&lt;strong&gt;u.username == t.userName&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:as3;&quot;&gt;
Impossible to access an attribute (&quot;username&quot;) on a null variable in @App/base_layout.html.twig at line 68&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>PHP</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/156247/problem-z-left-join</guid>
<pubDate>Wed, 06 Jul 2016 09:22:16 +0000</pubDate>
</item>
<item>
<title>INNER JOIN -  jak zastosować?</title>
<link>https://forum.pasja-informatyki.pl/128451/inner-join-jak-zastosowac</link>
<description>Mam dwie tabele:&lt;br /&gt;
&lt;br /&gt;
pracownicy_szkoly;&lt;br /&gt;
&lt;br /&gt;
pracownicy_biura;&lt;br /&gt;
&lt;br /&gt;
W każdej tabeli kolumny: ID, Imie, Nazwisko;&lt;br /&gt;
&lt;br /&gt;
Niektórzy pracownicy pracują tu i tu.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Jak mam zastosować złączenie INNER JOIN? Próbuje na wszystkie sposoby, ale nic mi nie działa.</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/128451/inner-join-jak-zastosowac</guid>
<pubDate>Sun, 10 Apr 2016 20:44:19 +0000</pubDate>
</item>
<item>
<title>Problem z zapytaniem, JOIN (SELECT)</title>
<link>https://forum.pasja-informatyki.pl/68699/problem-z-zapytaniem-join-select</link>
<description>

&lt;p&gt;Moje zapytanie:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT
	produkt.nid,
	produkt.title AS nazwa_produktu,
	stan_magazynowy.nid AS stan_magazynowy_nid,
	ilosc_mag.field_ilosc_w_magazynie_value AS ilosc,
	stan_magazynowy.created as data_stanu
FROM
	node produkt
LEFT JOIN (
	SELECT MAX(entity_id) FROM field_data_field_produkt_magazynowy AS produkt_magazynowy
	WHERE produkt_magazynowy.field_produkt_magazynowy_nid = produkt.nid
	AND (produkt_magazynowy.entity_type = 'node' AND produkt_magazynowy.deleted = '0' AND produkt_magazynowy.delta = '0'))
	AS max_stan
LEFT JOIN
	node stan_magazynowy
	ON stan_magazynowy.nid = max_stan.entity_id
LEFT JOIN
	field_data_field_ilosc_w_magazynie ilosc_mag
	ON ilosc_mag.entity_id = stan_magazynowy.nid
WHERE
	produkt.status = 1
	AND produkt.type = 'produkt_magazynowy'
GROUP BY produkt.nid
ORDER BY produkt.title&lt;/pre&gt;



&lt;p&gt;zwraca błąd:&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE&amp;nbsp;produkt.status = 1&amp;nbsp;AND produkt.type = 'produkt_magazynowy'&amp;nbsp;GROUP BY prod' at line 20&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Kompletnie nie rozumiem, skąd ten błąd się bierze. Jak usuwam z zapytania ten fragment, pokazuje mi na błąd przy LIMIT 0,1 . Przestaje rzucać błędami dopiero kiedy usunę wszystkie JOINy.&lt;/p&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/68699/problem-z-zapytaniem-join-select</guid>
<pubDate>Tue, 13 Oct 2015 06:38:22 +0000</pubDate>
</item>
<item>
<title>SELECT COUNT(tab1), COUNT(tab2), ... Problem ze złączeniem trzech tabel</title>
<link>https://forum.pasja-informatyki.pl/66732/select-count-tab1-count-tab2-problem-ze-zlaczeniem-trzech-tabel</link>
<description>

&lt;p&gt;Zapewne popełniam oczywisty dla wielu błąd, ale jakoś nie mogę się przez to przebić...&lt;/p&gt;



&lt;p&gt;Chodzi o&amp;nbsp;to aby z trzech tabel wybrać różne rekordy, przy czym z dwóch tabel chcę tylko zliczyć odpowiednie. Zapytanie które stworzyłem zwraca chyba iloczyn kartezjański dla COUNT'ów. (Gdy robię COUNT tylko dla jednej dodatkowej tabeli po JOIN to działa jak należy)&lt;/p&gt;



&lt;p&gt;Aktualne zapytanie:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
SELECT COUNT(i.img_id) as ile_postow, COUNT(c.com_id) as ile_komentarzy, user, register, last 
FROM users u
JOIN images i ON i.author=u.id
JOIN comments c ON c.author=u.id
WHERE u.id=1&lt;/pre&gt;



&lt;p&gt;Struktura tabel:&lt;/p&gt;



&lt;pre class=&quot;brush:sql;&quot;&gt;
CREATE TABLE IF NOT EXISTS `comments` (
  `com_id` int(11) NOT NULL AUTO_INCREMENT,
  `author` int(11) NOT NULL,
  `post` int(11) NOT NULL,
  `com` varchar(2048) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`com_id`),
  KEY `author` (`author`),
  KEY `post` (`post`)
)

CREATE TABLE IF NOT EXISTS `images` (
  `img_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) NOT NULL,
  `title` varchar(32) NOT NULL,
  `descr` varchar(64) NOT NULL,
  `datetime` datetime NOT NULL,
  `onmain` datetime NOT NULL,
  `author` int(11) NOT NULL,
  `main` tinyint(1) NOT NULL,
  PRIMARY KEY (`img_id`),
  KEY `author` (`author`)
) 

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(16) NOT NULL,
  `pass` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `register` datetime NOT NULL,
  `last` datetime DEFAULT NULL,
  `isAdmin` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
)
&lt;/pre&gt;</description>
<category>SQL, bazy danych</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/66732/select-count-tab1-count-tab2-problem-ze-zlaczeniem-trzech-tabel</guid>
<pubDate>Tue, 06 Oct 2015 16:48:24 +0000</pubDate>
</item>
<item>
<title>UNIX funkcja join, problem z zrozumieniem.</title>
<link>https://forum.pasja-informatyki.pl/26981/unix-funkcja-join-problem-z-zrozumieniem</link>
<description>Czesc,&lt;br /&gt;
&lt;br /&gt;
Pytanko odnosi sie do funkcji -join w terminalu (UNIX) mam mam 2 pliki A i B 1 kolumna to numer id, 2 kolumna to imie kolumn oddzielone separatorem ':', drugi plik 1 kolumna nr telefonu druga nr id separator ten sam, wytłumaczy ktos jak używać tej funkcji (przykład wymyślony na potrzeby zrozumienia) próbuje join -t ':' A B wyskakuje komunikat o nieposortowaniu plików po ówczesnym sorcie.</description>
<category>Inne języki</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/26981/unix-funkcja-join-problem-z-zrozumieniem</guid>
<pubDate>Fri, 05 Jun 2015 16:06:21 +0000</pubDate>
</item>
</channel>
</rss>