Boa noite.
Tenho um bd com 2 tabelas. A primeira (serv_os) tem as colunas id, fk_os e fk_servico a segunda (prod_os) tem as colunas id, fk_os e agora eu criei a coluna fk_serv. A coluna fk_serv vai ser preenchida com o valor id da primeira coluna. Fiz o seguinte update entre as tabelas:
UPDATE prod_os
JOIN serv_os ON serv_os.fk_os= prod_os.fk_os
SET prod_os.fk_serv = serv_os.id
WHERE prod_os.fk_os=serv_os.fk_os;
Até aqui tudo bem, porém, fiquei com o seguinte problema. Muitas vezes existem vários serviços na primeira tabela, por exemplo id=100 produto A, id=101 produto B, porém o fk_os é o mesmo . Ai na coluna fk_serv aparece sempre o id do produto A. Nesse caso duas vezes. O produto B, C,...etc não aparece.
Não consegui nenhum comando, já que o join é pela coluna fk_os, que fizesse o update mudar o ponteiro para o serviço B,C,etc.
Se alguém puder me ajudar eu agradeço.
Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
estou tentando fazer assim:
<?php
> ini_set('max_execution_time', 2000); $pdo = new
> DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD);
> $sql = $pdo->prepare("SELECT count(*) FROM tabela2018");
> $sql->execute();
> $livro = 1;
> foreach($sql as $obj){
> $variavel = $obj[0];
> ceil((float)$variavel/100);
> $qtdlaco = ceil((float)$variavel/100);
> for ($id = 1; $id <= 35; $id++) {
> for($L=1; $L < $qtdlaco; $L++) {
> for ($P = 0; $P <= 30; $P++) {
> $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id");
> $sql->bindValue(':LIVRO', $livro);
> $sql->bindValue(':POS', $P);
> $sql->bindValue(':PAGINA', $L);
> $sql->execute();
> }
> }
> }
>}
?>
mas na tebela so aparece:
LIVRO POS PAGINA
1 30 83
1 30 83
1 30 83
e nao como deveria :
LIVRO POS PAGINA
1 0 1
1 1 1
1 2 1
Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
3 parcelas de 100.00 e cada registro em seu devido mês:
INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17)
É mais eficiente fazer da forma acima ou colocar 3 INSERT?
Ou existe forma melhor de fazer isso?
tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
consigo fazer isso com INSERT, depois do UPDATE.
Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
Olá, estou com uma falha de lógica pegando aqui se alguém puder ajudar
Eu tenho um formulário tranquilo, como abaixo
<label for="cidades" class="form-label">Cidades</label>
<select class="form-select mb-3" name="cidades[]" id="cidades" multiple="multiple">
<option value="1">Cidade 1</option>
<option value="2">Cidade 2</option>
<option value="3">Cidade 3</option>
<option value="4">Cidade 4</option>
<option value="5">Cidade 5</option>
</select>
Blz eu recebe os dados do formulário ou seja os ids da cidade certinho em um array
array(3) { [0]=> string(1) "2" [1]=> string(2) "3" [1]=> string(1) "5" }
<?php
$dados = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
var_dump($dados);
?>
Agora como inserir todos os ids no banco? utilizando um for? um while? algum exemplo?
Pergunto pq ao tentar inserir no banco somente um registro é inserido e não todos do select