Prośba o sprawdzenie - MySQL

Odpowiedz Nowy wątek
2016-04-22 14:22
0

Witam, mam problem, otóż po wykonaniu bazy w sap powerdesigner i postawieniu jej na hostingu nie mogę dokonywać operacji na kilku tabelach np. wyświetlenie nazwiska pilota, który odpowiada za lot nr1

Poniżej kod sql:

 -- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: fdb14.freehostingeu.com
-- Czas generowania: 22 Kwi 2016, 11:11
-- Wersja serwera: 5.5.38-log
-- Wersja PHP: 5.5.34

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `2110092_adbad`
--
CREATE DATABASE IF NOT EXISTS `sql8116327` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `sql8116327`;

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `ADMINISTRACJA`
--

CREATE TABLE `ADMINISTRACJA` (
  `idPracownika` int(11) NOT NULL,
  `NazwiskoP` varchar(50) NOT NULL,
  `ImieP` varchar(50) NOT NULL,
  `NrTelP` decimal(15,0) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `ADMINISTRACJA`
--

INSERT INTO `ADMINISTRACJA` (`idPracownika`, `NazwiskoP`, `ImieP`, `NrTelP`) VALUES
(1, 'ADAMCZUK', 'RAFAL', 501991322),
(2, 'WEGLOWSKI', 'ALEKSANDER', 602882711);

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `BILETY`
--

CREATE TABLE `BILETY` (
  `idBiletu` int(11) NOT NULL,
  `idKlienta` int(11) NOT NULL,
  `idLotu` int(11) NOT NULL,
  `idPracownika` int(11) NOT NULL,
  `DataZakupu` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `BILETY`
--

INSERT INTO `BILETY` (`idBiletu`, `idKlienta`, `idLotu`, `idPracownika`, `DataZakupu`) VALUES
(1, 1, 1, 1, '2016-04-01'),
(2, 2, 2, 2, '2016-04-02');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `KLIENCI`
--

CREATE TABLE `KLIENCI` (
  `idKlienta` int(11) NOT NULL,
  `NazwiskoK` varchar(50) NOT NULL,
  `ImieK` varchar(50) NOT NULL,
  `NrTelK` decimal(15,0) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `KLIENCI`
--

INSERT INTO `KLIENCI` (`idKlienta`, `NazwiskoK`, `ImieK`, `NrTelK`) VALUES
(1, 'SZPAK', 'KATARZYNA', 502299600),
(2, 'MIKOLAK', 'LUIZA', 552001002);

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `LOTY`
--

CREATE TABLE `LOTY` (
  `idLotu` int(11) NOT NULL,
  `MiastoDocelowe` varchar(50) NOT NULL,
  `MiastoPrzesiadkowe` varchar(50) DEFAULT NULL,
  `MiastoStartu` varchar(50) NOT NULL,
  `DataLotu` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `LOTY`
--

INSERT INTO `LOTY` (`idLotu`, `MiastoDocelowe`, `MiastoPrzesiadkowe`, `MiastoStartu`, `DataLotu`) VALUES
(1, 'WARSZAWA', NULL, 'POZNAN', '2016-04-03'),
(2, 'WARSZAWA', 'PIASECZNO', 'GROJEC', '2016-04-04'),
(3, 'KRAKOW', 'POZNAN', 'MOSKWA', '2016-04-05');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `MASZYNY`
--

CREATE TABLE `MASZYNY` (
  `idMaszyny` int(11) NOT NULL,
  `idLotu` int(11) NOT NULL,
  `NazwaMaszyny` varchar(50) NOT NULL,
  `PojemnoscMaszyny` decimal(15,0) NOT NULL,
  `LinieLotnicze` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `MASZYNY`
--

INSERT INTO `MASZYNY` (`idMaszyny`, `idLotu`, `NazwaMaszyny`, `PojemnoscMaszyny`, `LinieLotnicze`) VALUES
(1, 1, 'TU-180', 150, 'AIR-MOSCOW'),
(2, 2, 'AIRBUS A380', 320, 'QUANTAS'),
(3, 2, 'BOEING 787', 350, 'FLY EMIRATES'),
(4, 3, 'BOEING 737', 160, 'QUANTAS'),
(5, 3, 'AIRBUS A400', 500, 'QUANTAS');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `PILOCI`
--

CREATE TABLE `PILOCI` (
  `idPilota` int(11) NOT NULL,
  `idLotu` int(11) NOT NULL,
  `NazwiskoPi` varchar(50) NOT NULL,
  `ImiePi` varchar(50) NOT NULL,
  `NrTelPi` decimal(15,0) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `PILOCI`
--

INSERT INTO `PILOCI` (`idPilota`, `idLotu`, `NazwiskoPi`, `ImiePi`, `NrTelPi`) VALUES
(1, 1, 'PIANKOWSKI', 'MARCIN', 882099766),
(2, 2, 'WIETECHA', 'SEBASTIAN', 500321987),
(3, 2, 'TOMCZYK', 'SEBASTIAN', 50443221),
(4, 3, 'MICHALSKI', 'ANDRZEJ', 801542189),
(5, 3, 'SEJKOWSKI', 'TOMASZ', 602991008);

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `REZERWACJE`
--

CREATE TABLE `REZERWACJE` (
  `idRezerwacji` int(11) NOT NULL,
  `idKlienta` int(11) NOT NULL,
  `idPracownika` int(11) NOT NULL,
  `DataRezerwacji` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `REZERWACJE`
--

INSERT INTO `REZERWACJE` (`idRezerwacji`, `idKlienta`, `idPracownika`, `DataRezerwacji`) VALUES
(1, 1, 1, '2016-03-30'),
(2, 2, 2, '2016-03-29');

--
-- Indeksy dla zrzutów tabel
--

--
-- Indexes for table `ADMINISTRACJA`
--
ALTER TABLE `ADMINISTRACJA`
  ADD PRIMARY KEY (`idPracownika`);

--
-- Indexes for table `BILETY`
--
ALTER TABLE `BILETY`
  ADD PRIMARY KEY (`idBiletu`),
  ADD KEY `FK_Relationship_1` (`idKlienta`),
  ADD KEY `FK_Relationship_5` (`idPracownika`),
  ADD KEY `FK_Relationship_6` (`idLotu`);

--
-- Indexes for table `KLIENCI`
--
ALTER TABLE `KLIENCI`
  ADD PRIMARY KEY (`idKlienta`);

--
-- Indexes for table `LOTY`
--
ALTER TABLE `LOTY`
  ADD PRIMARY KEY (`idLotu`);

--
-- Indexes for table `MASZYNY`
--
ALTER TABLE `MASZYNY`
  ADD PRIMARY KEY (`idMaszyny`),
  ADD KEY `FK_Relationship_8` (`idLotu`);

--
-- Indexes for table `PILOCI`
--
ALTER TABLE `PILOCI`
  ADD PRIMARY KEY (`idPilota`),
  ADD KEY `FK_Relationship_7` (`idLotu`);

--
-- Indexes for table `REZERWACJE`
--
ALTER TABLE `REZERWACJE`
  ADD PRIMARY KEY (`idRezerwacji`),
  ADD KEY `FK_Relationship_2` (`idKlienta`),
  ADD KEY `FK_Relationship_4` (`idPracownika`);

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;

Pozostało 580 znaków

2016-04-22 14:44
0

Zmień charset na utf-8 chyba że taki potrzebujesz. A jakie zapytanie i co Ci wyświetla w komunikacie błędu?

Pozostało 580 znaków

2016-04-22 14:46
0

Projekt bazy danych a uprawnienia dostępowe to dwie różne sprawy. Skontaktuj się z obsługą firmy hostingowej niech sprawdzą czy nadali ci odpowiednie uprawnienia. Pytania też, co dokładnie chcesz robić z tą bazą (rodzaj query) - bo być może polityka bezpieczeństwa firmy hostingowej wykracza po za twoje wymagania.

Pozostało 580 znaków

2016-04-22 15:35
0

np jezeli chce sprawdzic kto pilotuje, ktory samolot

USE sql8116327
SELECT NazwiskoPi, MiastoDocelowe
FROM PILOCI INNER JOIN LOTY
WHERE idPilota='1' 

pojawia się błąd #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 'SELECT NazwiskoPi, MiastoDocelowe FROM PILOCI INNER JOIN LOT' at line 2

edytowany 2x, ostatnio: djtrampek, 2016-04-22 15:43

Pozostało 580 znaków

2016-04-22 15:50
0
djtrampek napisał(a):

np jezeli chce sprawdzic kto pilotuje, ktory samolot

USE sql8116327
SELECT NazwiskoPi, MiastoDocelowe
FROM PILOCI INNER JOIN LOTY
WHERE idPilota='1' 

pojawia się błąd #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 'SELECT NazwiskoPi, MiastoDocelowe FROM PILOCI INNER JOIN LOT' at line 2

A nie zapomniałeś czasem o relacji? :P

Też mam takie wrażenie że brak FK - kate87 2016-04-22 15:51
a fk7 tego nie dotyczy? - djtrampek 2016-04-22 15:54

Pozostało 580 znaków

2016-04-22 15:51
0

to znaczy? w powerdesignerze nadalem relacje i wygenerowalem sql

Pozostało 580 znaków

2016-04-22 15:54
0
djtrampek napisał(a):

to znaczy? w powerdesignerze nadalem relacje i wygenerowalem sql

Wygenerowałeś sql wewnątrz programu. :P

Dla mnie to powinno wyglądać jakoś tak:

SELECT p.NazwiskoPi, l.MiastoDocelowe FROM PILOCI p LEFT JOIN LOTY l ON (l.idLotu = p.idLotu) WHERE p.idPilota='1' 
edytowany 2x, ostatnio: CeKa, 2016-04-22 15:55
dalej błąd 1064 - djtrampek 2016-04-22 15:58
To musiałem się gdzieś walnąć :P - CeKa 2016-04-22 16:06

Pozostało 580 znaków

2016-04-22 20:42
djtrampek napisał(a):

np jezeli chce sprawdzic kto pilotuje, ktory samolot

USE sql8116327
SELECT NazwiskoPi, MiastoDocelowe
FROM PILOCI INNER JOIN LOTY
WHERE idPilota='1' 

pojawia się błąd #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 'SELECT NazwiskoPi, MiastoDocelowe FROM PILOCI INNER JOIN LOT' at line 2

Ten błąd nie wynika ze złej składni SQL tylko z braku średnika po nazwie bazy danych. Dodatkowu należy użyć warunku sprzężenia bo wyjdzie Ci cross join i będziesz pytał dlaczego zwracawięcej rekordów. To że zdefiniowałeś klucze obce nie zwalnia Cię poprawnego budowania zapytań:

USE sql8116327;
SELECT 
    NazwiskoPi
    , MiastoDocelowe
FROM 
    PILOCI 
    INNER JOIN LOTY on loty.idLotu=piloci.idLotu
WHERE 
    idPilota=1

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0