Soy un principiante y estoy buscando una solución por más de una hora, no tengo tiempo que perder este fin de semana.

Entonces, quiero tener la fecha, el destino y el nombre donde klant_code = reis_code pero obtengo el error que se muestra en mi título. Si yo uso

select klant.naam, reis.bestemming from klant,reis where klant_code = reis_code 

Funciona, lo que no entiendo es que obtiene el error solo cuando quiero agregar la fecha al klant (cliente). ¿Qué estoy haciendo mal aquí?

¡Gracias por tu tiempo y ayuda! Este es mi código SQL:

CREATE TABLE `bestelling` (
  `bestelling_code` int(11) NOT NULL,
  `klant_code` int(11) NOT NULL,
  `reis_code` int(11) NOT NULL,
  `datum` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Gegevens worden geëxporteerd voor tabel `bestelling`
--

INSERT INTO `bestelling` (`bestelling_code`, `klant_code`, `reis_code`, `datum`) VALUES
(1, 1, 1, '2017-12-12'),
(2, 5, 3, '2018-01-01'),
(3, 2, 5, '2018-03-05'),
(4, 4, 2, '2018-08-08'),
(5, 3, 4, '2018-12-10');

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

--
-- Tabelstructuur voor tabel `klant`
--

CREATE TABLE `klant` (
  `klant_code` int(11) NOT NULL,
  `naam` varchar(20) NOT NULL,
  `adres` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Gegevens worden geëxporteerd voor tabel `klant`
--

INSERT INTO `klant` (`klant_code`, `naam`, `adres`) VALUES
(1, 'Gester', 'Amsterdam'),
(2, 'Piet', 'Breda'),
(3, 'Klaas', 'Rotterdam'),
(4, 'Henk', 'Etten-leur'),
(5, 'Sjaak', 'Tilburg');

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

--
-- Tabelstructuur voor tabel `reis`
--

CREATE TABLE `reis` (
  `reis_code` int(12) NOT NULL,
  `bestemming` varchar(12) NOT NULL,
  `klasse` int(11) NOT NULL,
  `prijs_in_euro` int(11) NOT NULL,
  `geannuleerd` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Gegevens worden geëxporteerd voor tabel `reis`
--

INSERT INTO `reis` (`reis_code`, `bestemming`, `klasse`, `prijs_in_euro`, `geannuleerd`) VALUES
(1, 'Spanje', 1, 500, 1),
(2, 'Duitsland', 2, 300, 0),
(3, 'Griekenland', 2, 700, 1),
(4, 'Italie', 1, 640, 0),
(5, 'Belgie', 2, 80, 1);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
0
user10320039 8 sep. 2018 a las 20:51

3 respuestas

La mejor respuesta

Hay algún problema con su código.

  1. use un nombre de alias para la tabla.
  2. use JOIN en lugar de , coma (CROSS JOIN) es un estilo antiguo, JOIN puede hacernos saber cada relación de tabla.
  3. La instrucción SQL asegura qué columna de la tabla de datos está claramente marcada

Puedes probar esto.

select k.naam, r.bestemming 
from klant k 
INNER JOIN reis r on k.klant_code = r.reis_code
1
D-Shih 8 sep. 2018 a las 17:59

Ambas tablas tienen una columna "klant_code".

Debe definirlo claramente en la cláusula where, es decir, klant.klant_code o bestselling.klant_code.

Creo que también estás buscando una combinación "ON" en lugar de "WHERE".

0
OwlsSleeping 8 sep. 2018 a las 17:59

Puedes probar esto con Inner Join con Alias.

select k.naam, r.bestemming from klant k 
INNER JOIN
reis r on 
k.klant_code = r.reis_code
0
Mohit Kumar 8 sep. 2018 a las 18:09