[SQL] Een LIKE met een subquery

Pagina: 1
Acties:

  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 18-02 02:06
Beste tweakers ik verontschuldig voor mijn vorige topic toen ik op bekijk bericht klikte, klikte ik per ongeluk op verstuur bericht 8)7

wat ik wil
Ik wil een query met een subquery die geldig met een afwijking. Hierbij wil ik een LIKE gebruiken
vb
333 LIKE %123334 (deze conditie moet waar zijn, en controleer dit voor elke record)

De database die gebruikt wordt is Oracle 10i
SQL:
1
2
3
SELECT *
FROM DEKERN.FA_SPEC_AANBIEDING , DEKERN.FA_SPEC , DEKERN.FA_AANBIEDING 
WHERE FA_AANBIEDING.BETALINGSKENMERK LIKE ('%' || (SELECT FA_SPEC_AANBIEDING.AANBIEDING_NR FROM DEKERN.FA_SPEC_AANBIEDING) || '%');


foutmelding
Ik krijg de foutmelding dat de subquery meerdere rows returnt. Mijn conclusie is dat een LIKE niet met meerdere ROWS overweg kan. Maar is het mogelijk met een aanpassing om dit wel te kunnen?

Ik hoop dat mijn bedoeling een beetje duidelijk is. Ik denk dat mijn SQL statement duidelijk weergeeft wat ik wil, alleen het werkt nog niet.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Waarom een subquery?
SQL:
1
2
3
4
SELECT *
FROM DEKERN.FA_SPEC , DEKERN.FA_AANBIEDING INNER JOIN DEKERN.FA_SPEC_AANBIEDING
ON FA_AANBIEDING.BETALINGSKENMERK LIKE '%' || FA_SPEC_AANBIEDING.AANBIEDING_NR || '%'
WHERE --de rest van je join-criteria, als je tenminste geen cartesisch product wil

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 19-02 23:53
Waarom doe je dit uberhaupt met een subquery ?
En waarom join je de 3 tabellen niet ? Op deze manier ga je een cartesiaans product krijgen.
code:
1
2
3
4
5
SELECT * 
FROM FA_SPEC_AANBIEDING, FA_SPEC, FA_AANBIEDING
WHERE FA_SPEC_AANBIEDING.xxxx =  detabeldiejewiltjoinen.foreignkeyveld
AND ... join de andere tabel ...
AND FA_AANBIEDING.BETALINGSKENMERK LIKE '%'  || bla || '%'


Maareh, ik snap je query eigenlijk niet :?
Je haalt gegevens op uit meerdere tabellen, die tabellen join je niet, en in een subquery haal je nog eens iets op uit een tabel die je al eens gebruikt ? :?
Ik denk dat je eerst eens een SQL tutorial moet opsnorren....

https://fgheysels.github.io/


  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 18-02 02:06
He dank voor jullie INPUT het werkt inderdaad. Ik denk dat ik inderdaad maar eens mijn dikke DB boek moet gaan door spitten :P (maar dan het technische gedeelte)

[ Voor 13% gewijzigd door MoNo79 op 15-06-2006 16:13 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Nog een ander tipje: als je je tabel- en veldnamen niet helemaal in hoofdletters tikt, dan is je query ook zonder syntax highlighting nog leesbaar. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Och, ik doe 't vrijwel altijd andersom: veldnamen in hoofdletters, en SQL keywordt in kleine letters:
SQL:
1
2
3
4
select * 
from FA_SPEC, FA_AANBIEDING inner join FA_SPEC_AANBIEDING 
on FA_AANBIEDING.BETALINGSKENMERK like '%' || FA_SPEC_AANBIEDING.AANBIEDING_NR || '%' 
where -- ...

Da's nog een overblijfsel uit m'n Clipper-verleden, waarbij veldnamen alleen maar in hoofdletters konden. En ik vind 't nog prima leesbaar. ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Mijn punt was eigenlijk dat het praktischer is als ze niet allebei dezelfde case gebruiken. :P Of dan de commando's of de veldnamen in hoofdletters moeten is redelijk triviaal, dat maakt in principe voor de leesbaarheid niet uit. Al is jouw notatie wat minder gangbaar. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MoNo79
  • Registratie: Juli 2001
  • Laatst online: 18-02 02:06
-NMe- schreef op donderdag 15 juni 2006 @ 16:14:
Nog een ander tipje: als je je tabel- en veldnamen niet helemaal in hoofdletters tikt, dan is je query ook zonder syntax highlighting nog leesbaar. ;)
goede tip eigenlijk wel, zal het in praktijk brengen

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
-NMe- schreef op donderdag 15 juni 2006 @ 19:54:
Mijn punt was eigenlijk dat het praktischer is als ze niet allebei dezelfde case gebruiken. :P Of dan de commando's of de veldnamen in hoofdletters moeten is redelijk triviaal, dat maakt in principe voor de leesbaarheid niet uit. Al is jouw notatie wat minder gangbaar. ;)
Waarom zou je nog schreeuwerige SQL willen als je toch syntax highlighting hebt? :)
* Cyphax doet sql in z'n geheel in lowercase over het algemeen.

Als het leesbaar moet zou ik juist proberen om je query over meerdere regels te verspreiden, ipv het allemaal achter elkaar te plakken.

Saved by the buoyancy of citrus

Pagina: 1