Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
Seleccionar campos que no están en GROUP BY cuando no se permiten SELECCIONES anidadas

tengo las tablas:

 Product(code (PK), pname, (....), sid (FK)), Supplier(sid(PK), sname, (....))

La tarea es:

Encuentre proveedores que suministren un solo producto. Muestre su nombre ( sname ) y el nombre del producto ( pname ).

Me parece un problema de GROUP BY , así que usé:

 SELECT sid FROM Product GROUP BY sid HAVING CAST(COUNT(*) AS INTEGER) = 1;

Esta consulta me ha encontrado la lista de sid que suministran un solo producto, pero ahora he encontrado un problema:

  • La asignación prohíbe cualquier forma de consultas SELECT anidadas.
  • El resultado de la consulta que he escrito tiene solo una columna. (La columna sid )
  • Por lo tanto, no puedo acceder al nombre del producto porque no está en la tabla de resultados de la consulta, y si lo hubiera agregado a la instrucción GROUP BY , la agrupación también se basará en el nombre del producto, lo cual es un comportamiento no deseado.

¿Cómo debo abordar el problema, entonces?

Nota: yo uso PostgreSQL

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede formular la consulta como:

 SELECT s.sid, s.sname, MAX(p.pname) as pname FROM Product p JOIN Supplier s ON p.sid = s.sid GROUP BY s.sid, s.sname HAVING COUNT(*) = 1;

No necesita convertir COUNT(*) a un número entero. Ya es un número entero.

over 4 years ago · Santiago Trujillo Report

0

podrías poner

 max(pname)

en la lista SELECT . Eso es un agregado, por lo que estaría bien.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!