1 00:00:00,500 --> 00:00:06,179 Aquí empiezo vídeo para la consulta de inserción de tablas con relación 1N. 2 00:00:06,820 --> 00:00:18,260 Nos habíamos quedado con una tabla solamente y a partir de aquí vamos a poder insertar datos dentro de una tabla que tiene una relación con clave ajena 3 00:00:18,260 --> 00:00:22,079 y en este caso va a ser de marca y de coches. 4 00:00:23,320 --> 00:00:28,160 En esta primera parte lo que vamos a hacer es crear las tablas, la nueva tabla. 5 00:00:28,160 --> 00:00:37,920 Entonces, teníamos la base de datos de coches, tenemos la base de datos, o sea, la tabla de marcas, vamos a crear una nueva tabla que es la tabla coches. 6 00:00:37,920 --> 00:00:46,200 En esta tabla coches lo único que voy a crear por ahora es un entero del modelo del coche 7 00:00:46,200 --> 00:00:49,240 Que va a ser de tipo barchar 8 00:00:49,240 --> 00:00:52,700 Y luego lo voy a dejar en 100 por ejemplo 9 00:00:52,700 --> 00:00:59,039 Y vamos a crear aquí la clave ajena hacia la marca 10 00:00:59,039 --> 00:01:07,299 Que va a ser, tiene que ser exactamente del mismo tipo que el ID que existe dentro de la tabla marcas 11 00:01:08,239 --> 00:01:13,819 Entonces esto va a ser a su vez también un autoincremento, lo dejo en clave primaria 12 00:01:13,819 --> 00:01:23,260 y esto en vez de coches lo voy a llamar id de coche, que sería mi identificador. 13 00:01:23,900 --> 00:01:30,420 Aquí no tenemos que generar la clave primaria, sino que la creamos en el nombre de la tabla, por supuesto, que es coches. 14 00:01:31,760 --> 00:01:33,239 Y lo guardo así. 15 00:01:33,239 --> 00:01:41,760 Entonces, ahora tenemos una tabla que es coches, que tiene este ID de coche, el modelo y el ID de la marca 16 00:01:42,540 --> 00:01:49,420 Veis que este ID de la marca es el que tiene que ser clave ajena y que apunte a la clave principal 17 00:01:49,420 --> 00:01:59,340 Que es este que es ID de marca, que tiene esta estructura con la clave primaria, este también es autoincremento y la denominación 18 00:01:59,340 --> 00:02:01,920 entonces sobre este 19 00:02:01,920 --> 00:02:03,780 vamos a cambiar la estructura 20 00:02:03,780 --> 00:02:05,459 entonces para poder 21 00:02:05,459 --> 00:02:08,139 hacer que 22 00:02:08,139 --> 00:02:09,939 esto sea clave ajena 23 00:02:09,939 --> 00:02:12,300 aquí en otras bases de datos 24 00:02:12,300 --> 00:02:14,319 no hace falta pero aquí sí que hace falta que esto 25 00:02:14,319 --> 00:02:16,439 sea o bien un campo único 26 00:02:16,439 --> 00:02:18,240 o bien dejarlo como tipo índice 27 00:02:18,240 --> 00:02:20,300 o que el ID de coche sea ese 28 00:02:20,300 --> 00:02:22,259 entonces una vez que lo tenemos 29 00:02:22,259 --> 00:02:23,840 ya marcado 30 00:02:23,840 --> 00:02:26,219 vamos a poder desde aquí decir que 31 00:02:26,219 --> 00:02:27,120 este ID marca 32 00:02:27,120 --> 00:02:33,240 Va a tener una relación con marcas 33 00:02:33,240 --> 00:02:35,699 Pero lo podemos cambiar aquí también 34 00:02:35,699 --> 00:02:37,979 Le digo que esto va a ser una foreign key 35 00:02:37,979 --> 00:02:42,080 Y que va a ir de coches a marcas 36 00:02:42,080 --> 00:02:49,659 Le digo que va a apuntar a la marca que está dentro de la tabla 37 00:02:49,659 --> 00:02:52,500 O sea, dentro de la base de datos de coches 38 00:02:52,500 --> 00:02:56,819 Y en la tabla marcas, con lo cual va a apuntar al ID de la marca 39 00:02:56,819 --> 00:03:18,639 Y esto podríamos tenerlo con restricciones, o sea, de manera que cada vez que se hiciera un delete de una marca, se borraran todos los coches, que en tuyo caso sería esto en Cascade, y siempre que se hiciera una actualización, que sería en el OnUpdate, también esto se modificará en Cascada. 40 00:03:18,639 --> 00:03:21,199 no es el caso, lo que voy a dejar es 41 00:03:21,199 --> 00:03:23,479 en restrict, de manera que 42 00:03:23,479 --> 00:03:25,520 si nosotros queremos borrar 43 00:03:25,520 --> 00:03:27,060 una marca, no nos va a dejar 44 00:03:27,060 --> 00:03:29,520 siempre que haya algún coche 45 00:03:29,520 --> 00:03:31,240 asociado a esa marca, vale 46 00:03:31,240 --> 00:03:32,520 entonces guardo esto 47 00:03:32,520 --> 00:03:35,479 ya tenemos la consulta hecha 48 00:03:35,479 --> 00:03:37,439 y ahora si nos vamos a la base de datos 49 00:03:37,439 --> 00:03:39,340 y nos vamos a ver 50 00:03:39,340 --> 00:03:40,379 el diseño que tiene 51 00:03:40,379 --> 00:03:43,520 pues vemos que tenemos la relación 52 00:03:43,520 --> 00:03:45,819 de las marcas con el coche 53 00:03:45,819 --> 00:03:47,939 vale, de manera que 54 00:03:47,939 --> 00:03:49,939 tenemos la marca 55 00:03:49,939 --> 00:03:52,520 tenemos el ID de marca que va a apuntar a marca 56 00:03:52,520 --> 00:03:54,259 entonces si nosotros queremos 57 00:03:54,259 --> 00:03:55,699 incorporar un coche 58 00:03:55,699 --> 00:03:57,280 inserto 59 00:03:57,280 --> 00:04:00,240 esto puedo dejarlo a cero 60 00:04:00,240 --> 00:04:02,060 puesto que el solo va 61 00:04:02,060 --> 00:04:02,960 a 62 00:04:02,960 --> 00:04:06,819 bueno, pues a incorporarlo 63 00:04:06,819 --> 00:04:08,800 puedo decir que 64 00:04:08,800 --> 00:04:10,340 es un Twingo 65 00:04:10,340 --> 00:04:11,740 que me parece que es de Renault 66 00:04:11,740 --> 00:04:13,139 el ID de la marca 67 00:04:13,139 --> 00:04:15,740 pues no sé cuál es, pero si por ejemplo 68 00:04:15,740 --> 00:04:17,540 le pongo un 7 69 00:04:17,540 --> 00:04:19,860 no me va a dejar en este caso 70 00:04:19,860 --> 00:04:23,079 añadir más que 71 00:04:23,079 --> 00:04:25,360 el valor de las marcas 72 00:04:25,360 --> 00:04:26,579 que ya están incorporadas 73 00:04:26,579 --> 00:04:29,699 lo dejo en este 6 74 00:04:29,699 --> 00:04:31,779 y si desde código 75 00:04:31,779 --> 00:04:33,139 quisiéramos en un momento dado 76 00:04:33,139 --> 00:04:35,779 añadir un código que no existe 77 00:04:35,779 --> 00:04:37,279 me copio este 78 00:04:37,279 --> 00:04:38,199 me voy al SQL 79 00:04:38,199 --> 00:04:42,720 voy a dejar este mismo 80 00:04:42,720 --> 00:04:45,220 y voy a decirle que voy a intentar 81 00:04:45,220 --> 00:04:47,240 meter un código 82 00:04:47,240 --> 00:04:48,939 que sea el 10 por ejemplo 83 00:04:48,939 --> 00:04:51,379 este sabemos que la ID de la marca esta 84 00:04:51,379 --> 00:04:51,959 no existe 85 00:04:51,959 --> 00:04:54,800 intento el insert 86 00:04:54,800 --> 00:04:56,279 dándole a continue 87 00:04:56,279 --> 00:05:00,759 y vemos que esto nos da un error porque 88 00:05:00,759 --> 00:05:02,779 no podemos añadir 89 00:05:02,779 --> 00:05:03,720 algo que 90 00:05:03,720 --> 00:05:05,019 haga 91 00:05:05,019 --> 00:05:08,819 bueno pues que vaya contra 92 00:05:08,819 --> 00:05:10,459 la integridad referencial es decir 93 00:05:10,459 --> 00:05:12,540 que no haya ninguna clave ajena 94 00:05:12,540 --> 00:05:15,019 dentro de marcas asociada 95 00:05:15,019 --> 00:05:16,920 vale o sea que no puedo meter algo 96 00:05:16,920 --> 00:05:18,860 que no esté la marca ya fijada 97 00:05:18,860 --> 00:05:20,360 con lo cual ya tenemos la clave ajena 98 00:05:20,360 --> 00:05:22,879 creada y funcionando sin problemas 99 00:05:22,879 --> 00:05:26,629 vamos a empezar con 100 00:05:26,629 --> 00:05:30,269 viendo que es lo que teníamos hecho 101 00:05:30,269 --> 00:05:31,769 que es dentro del main 102 00:05:31,769 --> 00:05:34,629 dejo esto comentado que eran las inserciones 103 00:05:34,629 --> 00:05:36,529 y si ejecutamos 104 00:05:36,529 --> 00:05:38,790 vemos que tenemos aquí un seleccionar marcas 105 00:05:38,790 --> 00:05:40,730 que va imprimiendo por pantalla 106 00:05:40,730 --> 00:05:42,610 y ahora mismo lo que tengo en la base de datos 107 00:05:42,610 --> 00:05:44,170 es todo esto, Ferrari, Bugatti 108 00:05:44,170 --> 00:05:46,470 Mazda, etc 109 00:05:46,470 --> 00:05:47,649 entonces 110 00:05:47,649 --> 00:05:55,269 Entonces teníamos la parte de la conexión y un marcadao donde tengo las inserciones. 111 00:05:56,470 --> 00:06:04,009 En este caso estoy usando una conexión pero no tengo el tema del enlace. 112 00:06:05,110 --> 00:06:08,430 Sería básicamente igual el hacerlo vosotros con el tema del enlace. 113 00:06:08,970 --> 00:06:13,449 Lo primero que me voy a crear es un elemento que sea coche. 114 00:06:13,449 --> 00:06:19,750 entonces este coche pues va a tener como habíamos visto un ID de coche 115 00:06:19,750 --> 00:06:23,910 que va a ser de tipo privado y va a ser de tipo entero 116 00:06:23,910 --> 00:06:26,709 tal y como tenemos también dentro de la base de datos 117 00:06:26,709 --> 00:06:31,350 aquí el ID va a empezar en minúsculas sin guión bajo 118 00:06:31,350 --> 00:06:34,009 y escrito de acamello como siempre 119 00:06:34,009 --> 00:06:37,949 y va a tener el modelo que sería un string 120 00:06:37,949 --> 00:06:41,529 entonces nos queremos también traer una marca 121 00:06:41,529 --> 00:06:54,829 Y aquí no me voy a traer el ID de marca, sino directamente me voy a traer un objeto de tipo marca que va a conllevar su ID y el nombre que tiene cualquier marca. 122 00:06:54,829 --> 00:07:13,089 Voy a incorporar el constructor vacío, puesto que voy a añadir ahora el constructor con todos los elementos, que va a ser utilizándolo todos los campos. 123 00:07:13,089 --> 00:07:14,329 ahora getters y setters 124 00:07:14,329 --> 00:07:19,050 también selecciono todos y los 125 00:07:19,050 --> 00:07:20,629 incorporo y ahora el toString 126 00:07:20,629 --> 00:07:24,980 que tendría aquí incorporado 127 00:07:24,980 --> 00:07:25,879 este lo tengo sin 128 00:07:25,879 --> 00:07:28,560 el string builder pero no pasa nada 129 00:07:28,560 --> 00:07:30,819 entonces el coche ya lo tengo 130 00:07:30,819 --> 00:07:32,939 generado y tal y como tenemos 131 00:07:32,939 --> 00:07:35,100 un marca.dao pues también voy a necesitar 132 00:07:35,100 --> 00:07:35,980 tener un 133 00:07:35,980 --> 00:07:39,810 una clase que sea 134 00:07:39,810 --> 00:07:41,170 un coche.dao 135 00:07:41,170 --> 00:07:44,089 vamos a tener un dao para cada uno de los elementos 136 00:07:44,089 --> 00:07:45,490 que hayamos generado 137 00:07:45,490 --> 00:07:47,990 dentro de ese coche.dao pues lo que 138 00:07:47,990 --> 00:07:53,350 voy a necesitar es igual que en marcada obtener por ejemplo una inserción de un coche 139 00:07:55,430 --> 00:08:02,569 entonces la conexión la voy a utilizar así podríais utilizar el otro elemento igual que 140 00:08:02,569 --> 00:08:07,470 aquí necesito tener un elemento estático que sea la conexión que voy a usar 141 00:08:10,149 --> 00:08:16,850 entonces la sentencia la tengo aquí lo que voy a hacer una inserción esto ya no me vale de nada 142 00:08:16,850 --> 00:08:22,149 nada, pero en vez de insertar en marcas, lo que voy a necesitar es insertar en coche, 143 00:08:22,589 --> 00:08:29,889 ¿vale? Se llama coches. Entonces, lo primero que tengo que mirar antes de insertar en marcas, 144 00:08:30,069 --> 00:08:37,769 o sea, en coches, es comprobar que la marca que tengo, ¿vale? Corresponde con alguna 145 00:08:37,769 --> 00:08:44,509 de las marcas que tengo aquí dentro, si no, me va a dar un error, ¿vale? Y además, la 146 00:08:44,509 --> 00:08:49,529 siguiente derivada sería, si no está la marca, en general lo que voy a querer es que 147 00:08:49,529 --> 00:08:54,649 inserte la marca, ¿vale? O sea, si ya existe, que no la inserte, pero si no existe, que 148 00:08:54,649 --> 00:09:01,629 la inserte, ¿vale? Y me pueden ocurrir dos cosas, que exista la marca con un ID determinado, 149 00:09:02,029 --> 00:09:08,870 porque lógicamente cuando yo vaya a darle un coche, creo que yo voy a lanzarle por aquí, 150 00:09:08,870 --> 00:09:18,769 y realmente todo parámetro va a ser un coche y ahí me va a venir la marca dada, ese coche que importo, 151 00:09:19,269 --> 00:09:26,029 el ID que corresponda a la marca realmente no tiene por qué corresponder, eso para mí es lo de menos, 152 00:09:26,029 --> 00:09:31,009 simplemente es que el nombre esté dentro de la base de datos y realmente no tiene por qué coincidir. 153 00:09:31,009 --> 00:09:34,190 Entonces, esto es lo primero que vamos a hacer 154 00:09:34,190 --> 00:09:42,289 Vamos a preguntar a ver si esa marca está ya dentro de la base de datos que tenemos 155 00:09:42,289 --> 00:09:47,830 Entonces, vamos a hacer una select de marca 156 00:09:47,830 --> 00:09:54,090 En la cual coincida el nombre de la marca con el elemento que yo le estoy pasando 157 00:09:54,090 --> 00:09:56,610 vale, entonces 158 00:09:56,610 --> 00:09:58,929 lo que necesitamos saber es si 159 00:09:58,929 --> 00:10:00,629 de marca 160 00:10:00,629 --> 00:10:01,029 la o 161 00:10:01,029 --> 00:10:04,129 de marca la o, punto 162 00:10:04,129 --> 00:10:05,990 is 163 00:10:05,990 --> 00:10:07,149 marca 164 00:10:07,149 --> 00:10:10,370 en las de datos por ejemplo 165 00:10:10,370 --> 00:10:12,450 y le tengo que pasar 166 00:10:12,450 --> 00:10:13,730 el nombre de la marca 167 00:10:13,730 --> 00:10:15,269 que yo quiero 168 00:10:15,269 --> 00:10:18,429 comprobar, vale, que para 169 00:10:18,429 --> 00:10:19,029 mí sería 170 00:10:19,029 --> 00:10:22,230 get marca punto 171 00:10:22,230 --> 00:10:24,769 get denominación de la marca 172 00:10:24,769 --> 00:10:25,889 que es como habíamos llamado 173 00:10:25,889 --> 00:10:28,250 que ese método no está hecho 174 00:10:28,250 --> 00:10:29,470 esto lo vamos a tener que hacer 175 00:10:29,470 --> 00:10:31,710 entonces si la marca ya está dentro 176 00:10:31,710 --> 00:10:34,029 entonces ya sí que tengo que hacer 177 00:10:34,029 --> 00:10:34,769 todo lo que hay aquí 178 00:10:34,769 --> 00:10:37,830 que sería insertar 179 00:10:37,830 --> 00:10:39,289 en coches 180 00:10:39,289 --> 00:10:40,789 el valor 0 181 00:10:40,789 --> 00:10:42,169 que sería de coche 182 00:10:42,169 --> 00:10:44,710 punto get 183 00:10:44,710 --> 00:10:48,169 no se llama de marca 184 00:10:48,169 --> 00:10:49,049 sino que se llama 185 00:10:49,049 --> 00:10:51,649 .get 186 00:10:51,649 --> 00:10:52,570 modelo 187 00:10:52,570 --> 00:10:55,669 y además tendré que pasarle 188 00:10:55,669 --> 00:10:57,110 después del modelo 189 00:10:57,110 --> 00:10:58,990 aquí 190 00:10:58,990 --> 00:11:01,909 tendré que darle también 191 00:11:01,909 --> 00:11:02,750 el 192 00:11:02,750 --> 00:11:04,490 identificador 193 00:11:04,490 --> 00:11:07,370 que corresponde 194 00:11:07,370 --> 00:11:08,710 a la 195 00:11:08,710 --> 00:11:11,029 esto aquí 196 00:11:11,029 --> 00:11:13,529 que coincida con el más 197 00:11:13,529 --> 00:11:16,529 es el que borra 198 00:11:16,529 --> 00:11:18,169 eso es 199 00:11:18,169 --> 00:11:22,549 y tendría que ser de coche 200 00:11:22,549 --> 00:11:24,230 punto get 201 00:11:24,230 --> 00:11:26,470 el marca 202 00:11:26,470 --> 00:11:27,190 punto 203 00:11:27,190 --> 00:11:32,909 esto no me gusta mucho 204 00:11:32,909 --> 00:11:34,570 el get id de marca 205 00:11:34,570 --> 00:11:34,990 de aquí 206 00:11:34,990 --> 00:11:38,529 porque no necesariamente yo tendría 207 00:11:38,529 --> 00:11:39,990 por qué pasarle un id de la marca 208 00:11:39,990 --> 00:11:41,889 con el coche que le estoy pasando 209 00:11:41,889 --> 00:11:43,750 entonces lo que vamos a hacer es que 210 00:11:43,750 --> 00:11:46,370 desde aquí crearme un entero 211 00:11:46,370 --> 00:11:50,049 que sea el id de marca 212 00:11:50,049 --> 00:11:52,250 que en principio esté a cero 213 00:11:52,250 --> 00:11:54,909 y a ese id de marca 214 00:11:54,909 --> 00:11:59,220 que es al que voy a asignar 215 00:11:59,220 --> 00:11:59,799 ¿vale? 216 00:12:03,320 --> 00:12:05,019 this marca en vez de esto 217 00:12:05,019 --> 00:12:05,899 me va a dar un 218 00:12:05,899 --> 00:12:08,480 un boolean 219 00:12:08,480 --> 00:12:09,600 realmente 220 00:12:09,600 --> 00:12:13,240 pero pues le vamos a decir 221 00:12:13,240 --> 00:12:13,820 que 222 00:12:13,820 --> 00:12:17,299 devuelva un número distinto 223 00:12:17,299 --> 00:12:19,000 de cero en el caso 224 00:12:19,000 --> 00:12:24,279 en el que haya encontrado algo, ¿vale? Que devuelva, este lo vamos a hacer que devuelva 225 00:12:24,279 --> 00:12:33,980 un entero mejor. Entonces, si el ID que le voy a asignar a marca, que si este es distinto 226 00:12:33,980 --> 00:12:41,759 de cero, va a ser mi pregunta. Y así solucionamos mejor. Entonces, me faltaría hacer este método, 227 00:12:41,759 --> 00:12:43,320 vale 228 00:12:43,320 --> 00:12:45,740 si eso, pues simplemente 229 00:12:45,740 --> 00:12:48,240 incorporo esto y en vez de darle 230 00:12:48,240 --> 00:12:49,440 este id de marca 231 00:12:49,440 --> 00:12:50,700 mejor 232 00:12:50,700 --> 00:12:53,799 recojo el que he recogido 233 00:12:53,799 --> 00:12:56,399 vale, o sea, simplemente compruebo por nombre 234 00:12:56,399 --> 00:12:58,299 y ya una vez 235 00:12:58,299 --> 00:12:59,759 que lo tenga, pues inserto 236 00:12:59,759 --> 00:13:01,539 entonces lo que me queda es 237 00:13:01,539 --> 00:13:03,580 comprobar si 238 00:13:03,580 --> 00:13:06,519 este id de marca 239 00:13:06,519 --> 00:13:07,980 está o no está 240 00:13:07,980 --> 00:13:09,960 vale, entonces 241 00:13:09,960 --> 00:13:24,320 Vamos a hacer un, si la marca está dentro de la base de datos, tenemos que hacer una select en la cual recojamos después el ID. 242 00:13:26,019 --> 00:13:33,200 Entonces, si voy a llamar a, esto es un public, pues puedo hacer un seleccionar marcas que está dentro del mismo. 243 00:13:33,200 --> 00:13:39,460 No, pero le tendría que pasar el nombre. Tengo que hacer un seleccionar marcas distinto. 244 00:13:39,960 --> 00:13:41,600 vale, pues entonces 245 00:13:41,600 --> 00:13:43,840 vamos a copiarlo y pegarlo tal cual 246 00:13:43,840 --> 00:13:46,059 aunque no haría falta hacer tanto rollo 247 00:13:46,059 --> 00:13:46,799 pero bueno 248 00:13:46,799 --> 00:13:50,200 también devuelvo 249 00:13:50,200 --> 00:13:52,100 un result set, voy a recoger 250 00:13:52,100 --> 00:13:53,600 solamente el 251 00:13:53,600 --> 00:13:55,840 id de la marca 252 00:13:55,840 --> 00:13:56,940 from marcas 253 00:13:56,940 --> 00:14:00,179 y en el cual 254 00:14:00,179 --> 00:14:02,259 la denominación de la marca 255 00:14:02,259 --> 00:14:04,120 sea igual 256 00:14:04,120 --> 00:14:06,039 a el den marca 257 00:14:06,039 --> 00:14:07,480 que yo le he pasado 258 00:14:07,480 --> 00:14:08,580 vale 259 00:14:08,580 --> 00:14:11,940 entonces nos faltaría hacer esto 260 00:14:11,940 --> 00:14:13,299 que aparezca la comilla 261 00:14:13,299 --> 00:14:15,779 ahora le pongo el de enmarca 262 00:14:15,779 --> 00:14:16,700 más 263 00:14:16,700 --> 00:14:19,840 doble y con comilla 264 00:14:19,840 --> 00:14:21,779 dentro, vale, esta sería 265 00:14:21,779 --> 00:14:23,679 mi select, select el id 266 00:14:23,679 --> 00:14:25,679 de marca from marcas, fuerte en 267 00:14:25,679 --> 00:14:26,960 marca, sea esto 268 00:14:26,960 --> 00:14:28,899 ejecutamos el query 269 00:14:28,899 --> 00:14:33,379 entonces le vamos a decir que 270 00:14:33,379 --> 00:14:34,320 si 271 00:14:34,320 --> 00:14:35,659 y 272 00:14:35,659 --> 00:14:37,940 rsnext 273 00:14:37,940 --> 00:14:40,799 que esto yo creo que nos da un true 274 00:14:40,799 --> 00:14:41,759 vale 275 00:14:41,759 --> 00:14:43,440 entonces 276 00:14:43,440 --> 00:14:46,340 no devuelvo nada sino simplemente 277 00:14:46,340 --> 00:14:49,000 no necesito generarme 278 00:14:49,000 --> 00:14:50,559 nada por el estilo que me va a devolver 279 00:14:50,559 --> 00:14:51,279 es un entero 280 00:14:51,279 --> 00:14:52,519 vale 281 00:14:52,519 --> 00:14:54,899 entonces 282 00:14:54,899 --> 00:14:57,600 me voy a crear ese entero 283 00:14:57,600 --> 00:15:00,279 el id de marca 284 00:15:00,279 --> 00:15:02,320 y le digo 285 00:15:02,320 --> 00:15:03,620 que el id de marca 286 00:15:03,620 --> 00:15:10,100 le asigno 287 00:15:10,100 --> 00:15:11,299 rs 288 00:15:11,299 --> 00:15:13,059 get int 289 00:15:13,059 --> 00:15:15,639 de id de marca 290 00:15:15,639 --> 00:15:17,019 o de cero como queráis 291 00:15:17,019 --> 00:15:19,600 ¿vale? y devuelvo 292 00:15:19,600 --> 00:15:21,519 el id de marca 293 00:15:21,519 --> 00:15:25,379 este retón cero es el que tenía 294 00:15:25,379 --> 00:15:26,100 de antes ya 295 00:15:26,100 --> 00:15:28,980 vale, entonces esto es lo que me va a devolver 296 00:15:28,980 --> 00:15:30,700 va a devolver un entero 297 00:15:30,700 --> 00:15:33,100 en el caso en el que esta select 298 00:15:33,100 --> 00:15:34,179 devuelva un valor 299 00:15:34,179 --> 00:15:38,080 y si no, pues me tendría que devolver 0 300 00:15:38,080 --> 00:15:41,259 que es con el valor con el que yo inicializo el ID de la marca 301 00:15:41,259 --> 00:15:45,620 y si existe, lo que me va a devolver es el ID 302 00:15:45,620 --> 00:15:49,299 voy a probar a ver si esto está funcionando bien 303 00:15:49,299 --> 00:15:51,899 antes de hacer el insert 304 00:15:51,899 --> 00:15:57,539 como práctica 305 00:15:57,539 --> 00:16:00,759 y entonces 306 00:16:00,759 --> 00:16:12,509 Entonces, para eso lo vamos a probar desde nuestro principal. 307 00:16:13,450 --> 00:16:16,769 Tenía aquí toda la selección de marcas que le voy a dejar tal cual. 308 00:16:17,789 --> 00:16:26,519 Voy a escribir aquí para diferenciar todo lo que tengo a continuación. 309 00:16:26,519 --> 00:16:47,570 Y lo que voy es a crear un nuevo coche, que es el que yo voy a querer insertar, que va a ser un nuevo coche de, pues, teníamos Toyota, ¿no? 310 00:16:49,090 --> 00:16:55,009 Importo el coche y va a ser, voy a poner un número cero porque voy a insertar como cero, eso me da igual. 311 00:16:55,009 --> 00:16:57,870 y va a ser por ejemplo un verso 312 00:16:57,870 --> 00:17:00,809 y la marca 313 00:17:00,809 --> 00:17:03,149 tenemos que hacerlo como una marca 314 00:17:03,149 --> 00:17:06,890 de la marca Toyota 315 00:17:06,890 --> 00:17:09,089 que el ID me va a dar igual 316 00:17:09,089 --> 00:17:12,130 porque podría tener cualquier ID 317 00:17:12,130 --> 00:17:14,349 que en principio no debería depender 318 00:17:14,349 --> 00:17:16,069 del ID que yo tuviera 319 00:17:16,069 --> 00:17:18,329 porque no tengo porque sabes realmente 320 00:17:18,329 --> 00:17:19,390 los IDs que haya 321 00:17:19,390 --> 00:17:21,589 y con ese 322 00:17:21,589 --> 00:17:26,150 Como le he dicho que escribo por el otro lado 323 00:17:26,150 --> 00:17:27,490 Y todavía no voy a insertar nada 324 00:17:27,490 --> 00:17:30,009 Pues simplemente voy a hacer que 325 00:17:30,009 --> 00:17:31,329 De coche he dado 326 00:17:31,329 --> 00:17:33,869 Coche he dado 327 00:17:33,869 --> 00:17:35,809 Punto insertar una 328 00:17:35,809 --> 00:17:38,089 Marca, lo llamo insertar una marca 329 00:17:38,089 --> 00:17:39,829 Es que no lo he cambiado 330 00:17:39,829 --> 00:17:41,789 Insertar un coche 331 00:17:41,789 --> 00:17:44,549 Un coche 332 00:17:44,549 --> 00:17:46,109 Y un coche he dado también 333 00:17:46,109 --> 00:17:47,849 Insertar un coche 334 00:17:47,849 --> 00:17:52,279 Vale 335 00:17:52,279 --> 00:17:54,799 pues vamos a ver si esto 336 00:17:54,799 --> 00:17:57,339 funciona bien, inserto el coche C 337 00:17:57,339 --> 00:17:59,180 vale, entonces 338 00:17:59,180 --> 00:18:00,119 continúo por aquí 339 00:18:00,119 --> 00:18:03,660 esto es lo que está dando un fallo 340 00:18:03,660 --> 00:18:05,319 porque había puesto el ID 341 00:18:05,319 --> 00:18:06,759 de marca que pertenecía al coche 342 00:18:06,759 --> 00:18:08,779 no el ID de marca tal y como está aquí 343 00:18:08,779 --> 00:18:11,059 así que lo voy a sustituir por el 1 que es más fácil 344 00:18:11,059 --> 00:18:12,619 entonces si ejecuto 345 00:18:12,619 --> 00:18:14,319 veis que Toyota corresponde al 6 346 00:18:14,319 --> 00:18:15,920 entonces 347 00:18:15,920 --> 00:18:18,640 desde aquí está encontrando 348 00:18:18,640 --> 00:18:20,279 bien la marca que corresponde 349 00:18:20,279 --> 00:18:21,799 entonces nos faltaría terminar esto 350 00:18:21,799 --> 00:18:24,680 en el momento en el que encuentre una marca 351 00:18:24,680 --> 00:18:29,059 que inserte los valores del coche donde corresponde 352 00:18:29,059 --> 00:18:31,319 y que nos devuelva en un momento dado 353 00:18:31,319 --> 00:18:33,779 el número de filas que ha insertado 354 00:18:33,779 --> 00:18:37,019 que esto podría devolver un boolean 355 00:18:37,019 --> 00:18:39,359 y que nos devuelva desde el retorno 356 00:18:39,359 --> 00:18:43,779 el row inserted 357 00:18:43,779 --> 00:18:46,539 pero tengo esto que declararlo 358 00:18:46,539 --> 00:18:48,559 aquí fuera 359 00:18:48,559 --> 00:18:51,240 para luego poder utilizarlo 360 00:18:51,240 --> 00:19:05,829 ¿vale? Y probablemente me dirá que lo inicialice. Return row inserted, que inicialice el valor 361 00:19:05,829 --> 00:19:15,109 y ya está, lo tengo a false. Vale, entonces, el insertar un coche, si existe, o sea, la 362 00:19:15,109 --> 00:19:21,309 marca ya existe, entonces yo no necesito insertar la marca. ¿Qué pasaría con el else? Pues 363 00:19:21,309 --> 00:19:28,170 con el else, quizás sería más sencillo, en el sentido de que solamente hay que insertar, 364 00:19:28,170 --> 00:19:40,069 hay que hacer las dos cosas, hay que insertar en el coche, ¿vale? Con la marca que tenga 365 00:19:40,069 --> 00:19:45,650 y además tengo que, bueno, no sería más sencillo porque tengo que hacer la otra versión 366 00:19:45,650 --> 00:19:54,069 que es insert into marcas. Bueno, esto no me hace falta hacerlo. Realmente podría llamar 367 00:19:54,069 --> 00:20:10,819 a marca.insertar. A ver si me sugiere. No me sugiere. Voy a grabarlo. A ver si así 368 00:20:10,819 --> 00:20:40,059 Vamos a ver qué hay. Insertar una marca y le tengo que pasar la marca que quiero que inserte que va a ser decoche.getmarca, ¿vale? 369 00:20:40,059 --> 00:20:49,740 Y lo malo ahora es que yo no sé cuál es el código con el que ha insertado este getmarca, ¿vale? 370 00:20:50,660 --> 00:21:00,019 Entonces igualmente voy a tener que preguntar cuál es el id que le corresponde a esa marca que acabo de insertar, ¿vale? 371 00:21:00,079 --> 00:21:02,039 Con lo cual otra vez tendría que hacer esto. 372 00:21:04,329 --> 00:21:06,869 Pero ahora ya sé que está insertada porque lo acabo de hacer. 373 00:21:06,869 --> 00:21:09,869 entonces que me devuelva 374 00:21:09,869 --> 00:21:10,309 de aquí 375 00:21:10,309 --> 00:21:13,329 el deadmark 376 00:21:13,329 --> 00:21:15,589 y ya 377 00:21:15,589 --> 00:21:17,069 pues simplemente 378 00:21:17,069 --> 00:21:19,569 haría el insert into coche 379 00:21:19,569 --> 00:21:21,990 entonces como veis que esto se me repite las dos veces 380 00:21:21,990 --> 00:21:23,470 y al final es exactamente igual 381 00:21:23,470 --> 00:21:25,930 porque al final lo que he hecho es 382 00:21:25,930 --> 00:21:28,369 asociar ese id que acabo de insertar 383 00:21:28,369 --> 00:21:28,569 ahí 384 00:21:28,569 --> 00:21:31,230 pues lo que voy a hacer es borrarlo de aquí 385 00:21:31,230 --> 00:21:33,089 y ponerlo fuera del if 386 00:21:33,089 --> 00:21:34,190 y se ha acabado 387 00:21:34,190 --> 00:21:36,349 vale entonces en un caso 388 00:21:36,349 --> 00:21:54,470 O sea, siempre voy a insertar en coches con el ID de marca que tenga, pero en un primer caso he necesitado, o sea, si ya está, no hago nada más que asignárselo, pero si no está, es cuando tengo que insertarla. 389 00:21:54,470 --> 00:22:00,259 entonces 390 00:22:00,259 --> 00:22:02,400 casi lo que vamos a hacer es 391 00:22:02,400 --> 00:22:03,359 simplemente 392 00:22:03,359 --> 00:22:06,519 dejarlo a que si es igual 393 00:22:06,519 --> 00:22:08,859 que lo inserte y que no haya 394 00:22:08,859 --> 00:22:09,220 ese 395 00:22:09,220 --> 00:22:12,599 y aquí yo creo que me falta 396 00:22:12,599 --> 00:22:14,819 que me sobra 397 00:22:14,819 --> 00:22:15,559 dice 398 00:22:15,559 --> 00:22:20,759 vale pues ya tendría el caso 399 00:22:20,759 --> 00:22:22,579 general en el que puedo tener 400 00:22:22,579 --> 00:22:24,559 coches para insertar 401 00:22:24,559 --> 00:22:28,599 que ya esté la marca dentro 402 00:22:28,599 --> 00:22:30,160 y puede haber otros 403 00:22:30,160 --> 00:22:31,640 en el que la marca no esté dentro 404 00:22:31,640 --> 00:22:34,240 entonces ya automáticamente 405 00:22:34,240 --> 00:22:36,579 también va a insertar la marca donde tiene que haber 406 00:22:36,579 --> 00:22:37,819 vamos a hacer 407 00:22:37,819 --> 00:22:39,640 los dos casos, este sería 408 00:22:39,640 --> 00:22:42,220 este primer caso en el que sí 409 00:22:42,220 --> 00:22:44,240 que el coche ya tiene esa marca 410 00:22:44,240 --> 00:22:46,380 y ahora voy a 411 00:22:46,380 --> 00:22:48,619 crear otro más que sea 412 00:22:48,619 --> 00:22:51,380 el uno 413 00:22:51,380 --> 00:22:54,039 y este voy a llamarlo 414 00:22:54,039 --> 00:23:20,599 coche nuevo que marca guía. Y ya con esto tendríamos que insertar este otro coche que 415 00:23:20,599 --> 00:23:35,960 Aquí no me tiene por qué dar ningún mensaje, pero pues voy a actualizar, ¿vale? 416 00:23:35,960 --> 00:23:52,160 Entonces tenemos la nueva marca que he insertado, este de Toyota, aquí en coches, pues tenemos el que había metido antes con la marca, este es Toyota, este no es Toyota, este es Renault, pero bueno, lo había metido así a web. 417 00:23:52,160 --> 00:24:00,180 Y luego el logo que acabo de meter con la marca Toyota, que es la que he insertado el tamaño de la base. 418 00:24:01,359 --> 00:24:01,720 ¿Vale? 419 00:24:02,420 --> 00:24:05,619 Bueno, pues esto sería en cuanto a la inserción. 420 00:24:06,740 --> 00:24:11,059 Vamos a hacer ahora la select de cualquiera de los inventos. 421 00:24:14,339 --> 00:24:23,519 Vale, entonces, para hacer la select, pues igual vamos a necesitar aquí dentro de coche DAO 422 00:24:23,519 --> 00:24:25,940 realizar esa selección 423 00:24:25,940 --> 00:24:32,480 nos vamos aquí 424 00:24:32,480 --> 00:24:33,660 a hacer una select 425 00:24:33,660 --> 00:24:35,539 entonces vamos a empezar desde marca 426 00:24:35,539 --> 00:24:39,559 que sería, voy a coger este mismo 427 00:24:39,559 --> 00:24:41,240 de seleccionar que va a ser similar 428 00:24:41,240 --> 00:24:43,819 y desde aquí, desde el coche 429 00:24:43,819 --> 00:24:45,519 vamos a hacer esa selección 430 00:24:45,519 --> 00:24:47,859 pero en vez de seleccionar marcas 431 00:24:47,859 --> 00:24:49,660 vamos a seleccionar coches 432 00:24:49,660 --> 00:24:51,720 y vamos a obtener un listado 433 00:24:51,720 --> 00:24:52,980 de coche 434 00:24:52,980 --> 00:24:55,400 esto va a ser 435 00:24:55,400 --> 00:24:57,099 listado de coche 436 00:24:57,099 --> 00:25:00,809 Arrae list de coche 437 00:25:00,809 --> 00:25:02,190 Y lista 438 00:25:02,190 --> 00:25:03,970 Coches 439 00:25:03,970 --> 00:25:06,410 El result set igual 440 00:25:06,410 --> 00:25:07,509 La conexión igual 441 00:25:07,509 --> 00:25:10,150 Entonces vamos a seleccionar 442 00:25:10,150 --> 00:25:13,210 Vamos a tener que seleccionar 443 00:25:13,210 --> 00:25:15,049 De coches 444 00:25:15,049 --> 00:25:16,009 Y de marcas 445 00:25:16,009 --> 00:25:17,910 Porque van a ser las dos cosas 446 00:25:17,910 --> 00:25:20,250 Lo que vamos a necesitar 447 00:25:20,250 --> 00:25:21,730 Para generar toda la lista 448 00:25:21,730 --> 00:25:24,130 Entonces esto 449 00:25:24,130 --> 00:25:25,250 En vez de un new marca 450 00:25:25,250 --> 00:25:27,430 Lo voy a quitar 451 00:25:27,430 --> 00:25:33,690 Y vamos a ir añadiendo a lista coches lo que vayamos necesitando 452 00:25:33,690 --> 00:25:37,769 Entonces lo primero, la select vamos a realizar 453 00:25:37,769 --> 00:25:42,750 Si queréis la hacemos aquí primero y así veis que funciona como debe ser 454 00:25:42,750 --> 00:25:47,890 Entonces tendríamos aquí estos tres elementos 455 00:25:47,890 --> 00:25:50,450 Si queréis no hace falta realmente punarlo 456 00:25:50,450 --> 00:25:53,589 Tendríamos el coche, el modelo 457 00:25:53,589 --> 00:25:55,750 voy a hacer primero con los dos 458 00:25:55,750 --> 00:25:58,470 y vamos a recuperar 459 00:25:58,470 --> 00:26:00,849 tanto de coches como de marcas 460 00:26:00,849 --> 00:26:08,089 de marcas 461 00:26:08,089 --> 00:26:13,130 y desde aquí vamos a seleccionar 462 00:26:13,130 --> 00:26:13,849 de marcas 463 00:26:13,849 --> 00:26:15,349 el ID ya lo tenemos 464 00:26:15,349 --> 00:26:18,670 y va a ser 465 00:26:18,670 --> 00:26:19,910 la denominación 466 00:26:19,910 --> 00:26:21,589 de la marca 467 00:26:21,589 --> 00:26:33,890 Entonces, si ponemos el ID de marca así, necesitamos decirle que como está en dos tablas distintas, pues podría ser de coches o puede ser de marcas 468 00:26:33,890 --> 00:26:39,549 Entonces hay que definir de qué tabla vamos a recuperar los datos 469 00:26:39,549 --> 00:26:45,529 Podéis establecer alias o no establecer alias, no da igual 470 00:26:45,529 --> 00:27:02,269 Pero aquí tendremos que decirle que el ID de la marca tiene que coincidir exactamente con el de marcas, punto, el ID de marca, ¿vale? Para que filtre sobre el join que hace de las dos tablas. 471 00:27:02,269 --> 00:27:04,130 al hacer el join haría la mezcla 472 00:27:04,130 --> 00:27:06,329 de todos los campos de unos con otros 473 00:27:06,329 --> 00:27:08,029 y nos daría información 474 00:27:08,029 --> 00:27:09,130 que no es la que queremos 475 00:27:09,130 --> 00:27:11,930 entonces con esto 476 00:27:11,930 --> 00:27:14,029 pues ya veis que estamos, lo que vamos a querer 477 00:27:14,029 --> 00:27:15,990 obtener al final es el ID del coche, el ID 478 00:27:15,990 --> 00:27:17,470 de la marca y la denominación 479 00:27:17,470 --> 00:27:19,269 y que corresponde 480 00:27:19,269 --> 00:27:21,150 todos los datos 481 00:27:21,150 --> 00:27:23,869 solamente aquellos coches 482 00:27:23,869 --> 00:27:25,970 que están dentro de la tabla y con las 483 00:27:25,970 --> 00:27:28,029 marcas y el nombre de la marca que le corresponde 484 00:27:28,950 --> 00:27:29,769 entonces 485 00:27:29,769 --> 00:27:31,250 con esto ya tendríamos 486 00:27:31,250 --> 00:27:32,809 select montada 487 00:27:32,809 --> 00:27:35,549 que podéis 488 00:27:35,549 --> 00:27:37,789 casi poner aquí 489 00:27:37,789 --> 00:27:38,589 directamente 490 00:27:38,589 --> 00:27:43,990 no hace falta ni ponerle 491 00:27:43,990 --> 00:27:46,190 tanto el modelo 492 00:27:46,190 --> 00:27:47,930 vale, esto es de 493 00:27:47,930 --> 00:27:50,369 marcas, de coches 494 00:27:50,369 --> 00:27:51,970 en el que 495 00:27:51,970 --> 00:27:53,589 esto corresponde a eso 496 00:27:53,589 --> 00:27:55,630 vale, ejecutaría la query 497 00:27:55,630 --> 00:27:56,750 pero ahora 498 00:27:56,750 --> 00:28:00,029 tendría que ir recuperando 499 00:28:00,029 --> 00:28:00,869 todos los datos 500 00:28:00,869 --> 00:28:08,930 y para eso pues tendré que hacer un new coche en el que recupero el id del coche que sería lo primero 501 00:28:08,930 --> 00:28:26,750 rs.getint de 1, empieza en 1 siempre, luego el modelo va a ser el getString con la segunda columna que es la 2 502 00:28:26,750 --> 00:28:29,190 el tercer elemento 503 00:28:29,190 --> 00:28:31,430 realmente va a ser 504 00:28:31,430 --> 00:28:33,210 la marca en el 505 00:28:33,210 --> 00:28:34,410 constructor de coche 506 00:28:34,410 --> 00:28:37,450 si os acordáis dentro del constructor de coche 507 00:28:37,450 --> 00:28:39,029 tenemos el ID 508 00:28:39,029 --> 00:28:41,630 el modelo y ahora la marca 509 00:28:41,630 --> 00:28:43,369 con el cual me voy a tener que generar 510 00:28:43,369 --> 00:28:43,990 mi marca 511 00:28:43,990 --> 00:28:46,690 con el cuarto elemento 512 00:28:46,690 --> 00:28:48,250 que para mí es 513 00:28:48,250 --> 00:28:50,150 rs.getin 514 00:28:50,150 --> 00:28:53,349 de este 515 00:28:53,349 --> 00:28:55,890 que es el tercero 516 00:28:55,890 --> 00:29:03,230 Y a continuación vendría el GetString del cuarto elemento. 517 00:29:05,390 --> 00:29:12,829 Ya tendría mi lista de coches, en el que está una marca dentro del coche que me he generado. 518 00:29:13,470 --> 00:29:14,970 Desde el principal, ¿qué voy a hacer? 519 00:29:14,970 --> 00:29:24,970 Pues llamar a coche.seleccionar coches. 520 00:29:24,970 --> 00:29:26,549 esto me va a devolver una lista 521 00:29:26,549 --> 00:29:28,970 pues igual que tenía aquí 522 00:29:28,970 --> 00:29:30,029 voy a hacer con la lista 523 00:29:30,029 --> 00:29:37,500 debería de comentar esto 524 00:29:37,500 --> 00:29:39,480 o insertar 525 00:29:39,480 --> 00:29:40,460 a lo mejor 526 00:29:40,460 --> 00:29:42,160 un par de coches más 527 00:29:42,160 --> 00:29:44,339 que podría ser 528 00:29:44,339 --> 00:29:52,500 DMV 529 00:29:52,500 --> 00:30:00,680 no sé si es un X5 530 00:30:00,680 --> 00:30:05,430 y si queréis 531 00:30:05,430 --> 00:30:06,190 pues ponemos 532 00:30:06,190 --> 00:30:08,970 un Q5 533 00:30:08,970 --> 00:30:10,349 de Audi 534 00:30:10,349 --> 00:30:16,230 la nueva marca ya la teníamos 535 00:30:16,230 --> 00:30:17,670 bueno pues fenomenal 536 00:30:17,670 --> 00:30:20,029 inserta uno y otro y ahora 537 00:30:20,029 --> 00:30:21,970 que nos seleccion 538 00:30:21,970 --> 00:30:26,480 y con esto pues tendríamos ya 539 00:30:26,480 --> 00:30:30,140 los cinco coches que tenemos ya 540 00:30:30,140 --> 00:30:36,000 los dos que acabamos de insertar con la denominación de la marca y el ID de la marca que tiene 541 00:30:36,000 --> 00:30:42,740 el coche. Y así es como vamos a trabajar en Java, o sea, con la lista de todos los 542 00:30:42,740 --> 00:30:47,400 elementos que ya hacen la relación aquí dentro de un dato y otro. Es como habéis 543 00:30:47,400 --> 00:30:51,740 estado trabajando hasta ahora en Java, ¿vale? Pero realmente dentro de la base de datos 544 00:30:51,740 --> 00:30:58,599 no corresponde con la forma que tienen en las tablas. Pero con el resto sería igual, 545 00:30:58,599 --> 00:31:13,220 Vale, dejo este momentín. Y aquí esto es lo que os paso. También lo dejo el archivo en los ejercicios de clase. Vale, pues hasta luego.