Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
Update com subquery , porém a subquery precisa acessar uma linha/coluna da tabela que está sofrendo update!
Por
Julio Albuquerque, em MySQL
Recommended Posts
-
Conteúdo Similar
-
Por clovis.sardinha
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.
-
Por vicente386
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 -
Por lezão
Boa tarde, galera!
Td bem com vcs?
Estou precisando de um UPDATE que qnd eu seleciono o checkbox e clico no botão submit ele chama para a pagina que ira fazer a alteração.
Tenho um exemplo só que em asp, vejam abaixo:
Imagem UPDATE
espero ter explicado certo.
obrigado!
-
Por Samuel Pietro
Estou com a seguinte situação.
Preciso que o Update só aconteça nos campos vazios. Por exemplo, tenho no CSV
id;a;b;c 1;1;;3 1;1;2;;
|id | a | b | c |
| 1 | 1 | | 3 |
| 1 | 1 | 2 | |
Na primeira linha tenho o campo da coluna b em branco, logo ele irá inserir no banco de dados o conteúdo da primeira linha, quando ele ler a segunda linha irá ver que a minha key, que é a coluna id, já existe e irá atualizar, o problema é que eu preciso que atualize apenas os campos em branco, pois se atualizar todos os campos ele iria substituir o campo da coluna c que ficaria em branco !
O código que fiz até o momento!
INSERT INTO tabela (id, a, b, c) VALUES ('$column[0]','$column[1]','$column[2]','$column[3]') on duplicate key UPDATE id='$column[0]',a='$column[0]', b='$column[0]', c='$column[0]'
Gostaria da ajuda de vocês para saber como posso adequar esse código na minha necessidade, seria tipo adcionar is null UPDATE.. sei lá, tentei várias opções mas sem sucesso ainda!
-
Por FERREIRA FILHO
Estou tentando fazer um update de vários registros com checkbox, mais não está atualizando no banco de dados MySQL. Segue o meu código, desde já agradeço!
<?php
include_once("../config/conexao.php");
$nivel = $_SESSION['nivel'];
if ($_SESSION['nivel'] == 4)
{
$sql = "SELECT ID, NOME, VOLUNTARIO FROM cidadao ORDER BY NOME";
$res = mysql_query($sql) or die (mysql_error() );
if (mysql_num_rows($res) > 0 )
echo '<form method="post">';
?>
<table width="431" border="0" align="center" cellpadding="0" class="bordaFina">
<tr bgcolor="#999999" >
<td width="302" align="center" valign="middle" bgcolor="#F0F0F0" class="style27">Nome </td>
<td width="123" align="center" valign="middle" bgcolor="#F0F0F0" class="style27">Voluntário</td>
</tr>
<?php
while ($row = mysql_fetch_assoc($res))
{
?>
<tr >
<td><?php echo $row["NOME"];?></div></td>
<td ><div align="center">
<input type="checkbox" name= "VOLUNTARIOS[<?php $row["ID"] ?>]" value="1" <?php if($row["VOLUNTARIO"] == 1){ echo "checked";} ?>>
<input type="hidden" name= "VOLUNTARIOS[<?php $row["ID"] ?>]" value="0" <?php if($row["VOLUNTARIO"] == 0){ echo ""; } ?>>
</div></td>
</tr>
<?php
} //End While
?>
</table>
<p><div align="center"><?php echo '<input type="submit"name= "submit" value= "Salvar">';?></div>
<?php
if (isset ($_POST["submit"]))
{
foreach($_POST['VOLUNTARIOS'] as $ID => $VOL)
{mysql_query("update cidadao SET VOLUNTARIO ='$VOL' WHERE ID='$ID'")or die(mysql_error()); }
echo "<meta HTTP-EQUIV='refresh' CONTENT='1;URL=teste.php'>";
}
?>
<?php
echo'<br>';
echo '</form>';
}//endif
?>
-