Erro de tabelas conversando

Estou fazendo um sistemas de notas, mas cada trimestre fica em uma tabela por conta das atividades de cada trimestre, o problema é que quando pego a media final até consigo inserir 1 matéria, mas na 2° ela começa a pegar o valor da primeira e desconfigura tudo… já fiz de tudo mas não consigo resolver o problema deste select

Notas Fundamental

<!-- Inserindo JavaScript na página --> <script type="text/javascript" src="https://code.jquery.com/jquery-1.8.3.min.js"></script> 

Lançar nota

    <div class="dropdown">         <button class="dropbtn">Trimestre</button>         <div class="dropdown-content">             <a href="../php/tri1f.php">1°Trimestre</a>             <a href="../php/tri2f.php">2°Trimestre</a>             <a href="../php/tri3f.php">3°Trimestre</a>             <a href="../php/mdfinal_F.php">Situação Final</a>         </div>     </div>      <a href="http://localhost/danota2/sitev7/php/gerarpdf.php">Gerar Relatorio</a>        <div class="dropdown">         <button class="dropbtn">Sair</button>         <div class="dropdown-content">         <a href="../html/index.html">Sair</a>          </div>     </div>  </div> <center>     <h1>Média Final</h1></center>  <!-- Centralizando o título --> <center>     <div class="tabela">         <!--Container para as outras tags-->         <table border="1">             <!--Borda da tabela-->             <thead>                 <tr>                     <th>Nome do Aluno</th>                   <th>Ensino</th>             <!--      <th>Materia 1º Trimestre</th> -->                   <th>Média 1º Trimestre</th>                   <th>Media 2º Trimestre</th>                  <!--<th>Média 2º Trimestre</th> -->                  <th>Media 3º Trimestre</th>                    <!--<th>Média 3º Trimestre</th> -->                   <!-- <th>OIA 1</th>                     <th> OIA 2</th>                     <th>OIA 3</th>                     <th>OIA 4</th>                     <th>BÔNUS</th>                     <th>PCP</th>                     <th>P.O</th>                     <th>P.R</th>-->                     <th>M.F</th>                     <th>Situação</th>                   </tr>             </thead>             <form action="post">                 <tbody>                      <!-- seleciona a nota final -->                     <?php                         $  pega_id = $  _SESSION['usuario'];                      echo "Simulação das suas médias, ".$  _SESSION['usuario'];                     $  busca_nota= "Select cadastro.usuario as 'Nome', cadastro.ensino as 'ensino',notasf1.materia as 'Materia 1º Trimestre',(notasf1.mf) as 'Media 1º Trimestre', (notasf2.mf) as 'Media 2º Trimestre',(notasf3.mf) as 'Media 3º Trimestre', ((notasf1.mf*1)+(notasf2.mf*2)+(notasf3.mf*3)) as 'Media Final' from cadastro,notasf1,notasf2,notasf3 where usuario = '$  pega_id' ";                       $  resultado_nota = mysqli_query($  conn, $  busca_nota);                       //while($  row_nota = mysqli_fetch_assoc($  resultado_nota)){                          while($  row_nota = mysqli_fetch_assoc($  resultado_nota)){                           //$  row_nota = mysqli_fetch_assoc($  resultado_nota)                         //<th><?php echo $  row_nota['ensino'];// ?><tr>                         <td><?php echo $  row_nota['Nome'] ; $  row_nota['ensino'];?></td>                         <td><?php echo $  row_nota['Materia 1º Trimestre']; ?></td>                          <td><?php echo $  row_nota['Media 1º Trimestre']; ?></td>                          <td><?php echo $  row_nota['Media 2º Trimestre']; ?></td>                          <td><?php echo $  row_nota['Media 3º Trimestre']; ?></td>                         <td><?php echo $  row_nota['Media Final']; ?></td>                          <td><?php if($  row_nota['Media Final']<36){echo "<span style=\"color:hotpink;\">Reprovado</span><BR>";}                         else                          {echo "<span style=\"color:lightgreen;\">Aprovado</span><BR>";}                            ?>                        </td>                      </tr>                      <?php                        }                         ?>                   </tbody>             </form>         </table>     </div>  </center> <br>  <!-- Rodapé da página --> <div id="rodape2">     <img class="alcina" src="../img/alcina.png"><img id="tec" src=../img/startec.png> <br>     <p class="alcina">         <center>Copyright &copy; 2018 EME Profª Alcina Dantas Feijão             <br> 3 TID - Tales Silva.<br>Todos os direitos reservados.</center>     </p><br> </div> 

Laravel – Consulta com 3 tabelas (1-N)

Estou tentando relacionar estas tabelas:

inserir a descrição da imagem aqui

O objetivo é mostrar:

Nome,Descrição,Parcela,Valor 

Model Cliente:

class Cliente extends Model {      public function recebtos()     {         return $  this->hasMany('App\Recebto','id_cliente');     }  } 

Model Recebto:

class Recebto extends Model {     public function cliente()     {         return $  this->belongsTo('App\Cliente','id_cliente');     }      public function parcelas()     {         return $  this->hasMany('App\RecebtoParcela','id_recebto');     } } 

Model Parcelas:

class RecebtoParcela extends Model {     public function recebto()     {         return $  this->belongsTo('App\Recebto','id_recebto');     } } 

No Controller:

class RecebtoController extends Controller {     public function index()     {         $  recebtos = Recebto::paginate(15);         return view('recebtos.index',compact('recebtos'));     } 

Só que assim, se um recebimento tem mais de uma parcela, na view só aparece uma delas. O que posso fazer para que todas as parcelas sejam mostradas?

Duas tabelas usando Where

Tenho o ID de um usuário que esta em $ usuario.

Tenho duas tabelas.

Tabela A (contém perguntas) coluna idA coluna perguntaA

Tabela B (armazena o id de uma pergunta respondida por um usuário) coluna idB coluna idusuarioB

O usuário entra em uma página X que mostra uma pergunta aleatória da Tabela A. Quando ele responde, os dados e da pergunta são aramazenados Tabela B (idusuario = $ usuario e idB = id da pergunta que ele respondeu). Quero que meu select da página X não mostre uma pergunta já respondida pelo usuário.

Problemas com relacionamento de tabelas no laravel

Quando eu digito php artisan migrate ele gera esse erro:

  Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005    Can't create table `blog`.`produtos` (errno: 150 "Foreign key constraint    is incorrectly formed") (SQL: alter table `produtos` add constraint    `produtos_user_id_foreign` foreign key (`user_id`) references `users`    (`id`) on delete cascade)     Exception trace:   PDOException::("SQLSTATE[HY000]: General error: 1005 Can't create table   `blog`.`produtos` (errno: 150 "Foreign key constraint is incorrectly  

Veja como está o meu código

Schema::create('produtos', function (Blueprint $  table) {         $  table->bigIncrements('id');         $  table->unsignedInteger('user_id');         $  table->foreign('user_id')             ->references('id')             ->on('users')             ->onDelete('cascade');          $  table->string('nome');         $  table->integer('quantidade');         $  table->integer('valor');         $  table->timestamps();     }); 

Onde devo estar errando?

Relacionamento entre duas tabelas

Pessoal tenho duas tabelas que se relacionam entre si. São elas:

Categoria:

public function up() {     Schema::create('categories', function (Blueprint $  table) {         $  table->increments('id');         $  table->string('name', 128);         $  table->string('slug', 128)->unique();         $  table->mediumText('body')->nullable();         $  table->timestamps();      }); } 

Post:

public function up() {     Schema::create('posts', function (Blueprint $  table) {         $  table->increments('id');         $  table->integer('category_id')->unsigned();         $  table->string('title', 128)->nullable();         $  table->string('slug', 128)->unique();         $  table->longText('post_content')->nullable();         $  table->mediumText('short_content')->nullable();          //RELACIONES         $  table->foreign('category_id')->references('id')->on('categories')         ->onDelete('cascade')         $  table->timestamps();     }); } 

Model Categoria.

class Category extends Model {     protected $  guarded = [];      public function posts() {         return $  this->hasMany('App\Post');     } } 

Model Post

class Post extends Model {     protected $  guarded = [];      function categories() {          return $  this->belongsTo("App\Category");     }  } 

Função do Controller que lista os dados

public function catposts() {      $  posts = Post::with('categories')->get();     $  cats = Categories::with('posts')->get();      // dd($  posts);      return view('admin.campaign_rewards', compact('posts','cats'));  } 

E a view

<div class="TabControl">       <div id="header">          <ul class="abas">               @foreach($  categories as $  category)                <li><div class="aba"><a href="#"><span>{{ $  category->name }}</span></a></div></li>                 @endforeach              </ul>          </div>         <div id="content">              <div class="conteudo">                   @foreach($  posts as $  post)                       <div class="row">                           <div class="helper">                               <h5 class="card-title">{{ $  post->title }}</h5>                                 <p class="card-text">{{ $  post->short_content }}</p>                             </div>                             @endforeach                             </div>                         </div>                      </div>                  </div>  

O problema é que da um erro, não sei se o controller e/ou a view estão erradas.

Não conseguindo fazer a lógica.

Na view eu tenho um sistema de abas, onde preciso fazer um loop forearch para percorrer e mostrar as categorias, e logo abaixo na view em outra div, eu tenho que fazer outro loop forearch para mostrar os posts relacionados a categoria que esta na primeira aba, no caso são apenas 4 categorias.

Não conseguindo fazer a logica no controller e nem na views para mostrar esses resultados.

Se alguém puder me ajudar agradeço de coração pois ja estou quebrando a cabeça a uns 4 dais com isso.

POSTGRES: INNER JOIN 1:N com várias tabelas. Preciso contar e mostrar registros que foram acessados como uma lista

Preciso contar registros da tabela acesso_registro e mostrar em uma lista.

Schema:

acesso_registro +--------------+--------+------------+ |id_tipo_midia |id_midia| data_acesso|  +--------------+--------+------------+ |01            | 03     | 2019-06-03 | |01            | 03     | 2019-06-03 | |03            | 01     | 2019-06-05 | |02            | 03     | 2019-06-06 | |02            | 01     | 2019-06-06 | |03            | 02     | 2019-07-08 | +--------------+--------+------------+  tipo_midia +--+-------+ |id| tipo  | +----------+ |01| Vídeo | |02| Audio | |03| Imagem| |04| Outro | +----------+  videos +--+----------+ |id| titulo   | +-------------+ |01| video_01 | |02| video_02 | |03| video_03 | |04| video_04 | +-------------+  audios +--+----------+ |id| titulo   | +-------------+ |01| audio_01 | |02| audio_02 | |03| audio_03 | |04| audio_04 | +-------------+  imagens +--+-----------+ |id| titulo   | +--------------+ |01| imagem_01 | |02| imagem_02 | |03| imagem_03 | |04| imagem_04 | +--------------+ 

A query deve me retornar:

*---------*---------*--------* |tipoMidia| titulo  | acessos| *---------*---------*--------* |vídeo    |video_03 | 2      | |Imagem   |imagem_01| 1      | |Imagem   |imagem_02| 1      | |Audio    |audio_01 | 1      | |Audio    |audio_03 | 1      | *---------*---------*--------* 

Obs: A tabela acesso_registro incrementa uma linha sempre que uma mídia é acessada. O banco de dados que eu uso é Postgres.

COUNT e SUM com 3 tabelas

Eu estou fazendo um sistema de gerenciamento de TI. Tenho 3 tabelas: computers, offices, office_keys

inserir a descrição da imagem aqui

Exemplo:

offices ______________________________________ id      | 1 version | Home & Business 2016   office_keys _______________________________________ id        | 1 office_id | 1 key       | AAAA-BBBB-CCCC-DDDD-EEEE   computers _______________________________________ id            | 1 name          | DESKTOP office_key_id | 1 

O campo quantity da tabela office_keys representa o número de vezes que aquela chave pode ser usada em computadores (office standard).

Eu quero fazer uma query que traga todas as versões do office, a soma da quantidade das keys (quantity) e soma de quantas chaves estão sendo usada (somente a soma).

Por exemplo:

Se eu tiver 4 chaves de office 2016 e 2 computadores utilizando 2 dessas chaves, ou se eu tiver 3 chaves de office 2013 e 3 computadores utilizando essas 3 chaves, quero receber:

Office   |    Quantidade   |   Em uso 2016     |    4            |   2 2013     |    3            |   3 

Tentei fazer isso:

SELECT DISTINCT offices.id, offices.version, SUM(office_keys.quantity) AS quantity, COUNT(computers.id) AS in_use FROM offices LEFT JOIN office_keys ON office_keys.office_id = offices.id LEFT JOIN computers ON computers.office_key_id = office_keys.id GROUP BY offices.id 

Mas a somas não estão certas por causa das linhas duplicadas.

Como posso resolver isso? Obrigado!

Comparação entre duas tabelas SQL

Boa tarde.

Como faço para fazer a comparação entre duas tabelas SQL? Sendo que:

  • Existem duas tabelas de medicamentos, uma contendo o nome do medicamento em inglês e outra em português.
  • As características (princípios ativos) dos medicamentos estarão na mesma língua.
  • Preciso ler o nome do medicamento em português, e buscar medicamentos com os mesmos princípios ativos na outra tabela e retornar o nome do medicamento da outra tabela, ou seja, em inglês.

Por exemplo:

Tabela em Português

Nome Remédio | Princípio Ativo

Buscopan – 10 mg de butilbrometo, 2 mg de ácido acético

Tabela em Inglês

Nome Remédio | Princípio Ativo

Hyoscine butylbromide – 10 mg de butilbrometo, 2 mg de ácido acético

Entrada: Buscopan Saída: Hyoscine butylbromide

Estou fazendo em JS.

Obrigado se puderem ajudar.

Como configurar os relacionamentos entre tabelas (e fazer query com withRelated) no ORM Bookshelf.js?

Seguindo a documentação do Bookshelf.js (https://bookshelfjs.org), eu criei a minha conexão com a base de dados Mysql normalmente:

const knex = require("knex")({   client: "mysql",   connection: {     host: "localhost",     user: "root",     password: "keydb",     database: "desenrola_app",     charset: "utf8"   } });  const bookshelf = require("bookshelf")(knex);  module.exports = bookshelf;

Logo em seguida, eu defini duas instâncias de tabelas que estão criadas (e relacionadas por FK, onde customer_person_id da tabela customer faz referência a id da tabela person.

Segue os models:

const db = require("./db"); const Customer = require("./customer");  const Person = db.Model.extend({   tableName: "person",   customer() {     return this.hasOne(Customer, "customer_person_id", "id");   } });  module.exports = Person;

e

const db = require("./db"); const Person = require("./person");  const Customer = db.Model.extend({   tableName: "customer",   person() {     return this.belongsTo(Person, "customer_person_id", "id");   } });  module.exports = Customer;

No controller, onde eu exporto a função findOne para as minhas rotas (esta parte está OK, cai no CATCH da função ou simplesmente retorna JSON vazio no Postman), executo a seguinte query:

const Customer = require("../models/customer");  exports.findOne = async (req, res, next) => {   const id = req.body.id;    await new Customer({ customer_person_id: id })     .fetch({ withRelated: ["person"] })     .then(function(client) {       res.send(client.related("person").toJson());     })     .catch(err => res.json(err)); };

Eu gostaria de saber se estou fazendo o relacionamento one-to-one de forma equivocada, ou estou pecando em alguma regra. Bem, não sei mesmo o motivo de esta query não me retornar algo, uma vez que em meu banco de dados tenho na tabela customer a FK preenchida com o mesmo valor de ID na tabela person.

Permissão de DROP de tabelas em bancos SQL Server

Ao executar o comando (T-SQL) de DROP abaixo no SQL server é exibido a seguinte mensagem:

Cannot drop the table ‘[dbo].[TABELA]’, because it does not exist or you do not have permission.

Comando

EXEC sp_MSForEachTable 'DROP TABLE [?]' 

Entretanto ao executar outro comando T-SQL ou um DROP Table básico a mensagem de erro acima não é exibida, sendo o comando executado corretamente.

DROP TABLE ArquivosFeiras EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT all' 

Ambos os comandos acima funcionam, qual o motivo do EXEC sp_MSForEachTable 'DROP TABLE [?]' necessitar de uma permissão? e como dar esta permissão?