Schrift
[thread]3761[/thread]

Vergleich zweier Felder bei JOIN



<< >> 5 Einträge, 1 Seite
Teutales
 2007-01-10 11:06
#35070 #35070
User since
2006-03-21
47 Artikel
BenutzerIn
[default_avatar]
Ich möchte eine SQL-Abfrage an eine Datenbank stellen. Erster Ansatz:
Code: (dl )
SELECT Ticket.CalledNumber, IPtoGS.PhoneNumberLike FROM Ticket JOIN IPtoGS ON (Ticket.CalledNumber = IPtoGS.PhoneNumberLike)

In diesem Fall vergleiche ich die Felder Ticket.CalledNumber und IPtoGS.PhoneNumberLike auf Gleichheit. Dies ist allerdings nicht ganz richtig, denn IPtoGS.PhoneNumberLike kann gekürzt sein, muss es aber nicht. D.h. ich müsste eigentlich prüfen:
Z.B. Ist 1234 (IPtoGS.PhoneNumberLike) in 12345 (Ticket.CalledNumber) (beides Varchars, wegen möglicher 0 am Anfang)

Viele Grüße
Stefan
"der auf dem Sclauch steht"
esskar
 2007-01-10 11:17
#35071 #35071
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kann man like in joins verwenden
also

on ( Ticket.CalledNumber LIKE IPtoGS.PhoneNumberLike )
renee
 2007-01-10 11:19
#35072 #35072
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mysql> CREATE TABLE tbl_Test1(
-> ID INT,
-> Phone VARCHAR(35));
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> CREATE TABLE tbl_Test2(
-> ID INT,
-> Vorname VARCHAR(36),
-> PhoneLike VARCHAR(29));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tbl_Test1 values(1,123456);
Query OK, 1 row affected (0.00 sec)

mysql> insert into tbl_Test1 values(2,7235);
Query OK, 1 row affected (0.00 sec)

mysql> insert into tbl_Test2 values(1,'Teutales',1234);
Query OK, 1 row affected (0.00 sec)

mysql> select * FROM tbl_Test1, tbl_Test2 WHERE tbl_Test1.Phone like CONCAT(tbl_Test2.PhoneLike,'%');
+------+--------+------+----------+-----------+
| ID | Phone | ID | Vorname | PhoneLike |
+------+--------+------+----------+-----------+
| 1 | 123456 | 1 | Teutales | 1234 |
+------+--------+------+----------+-----------+
1 row in set (0.00 sec)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-01-10 11:21
#35073 #35073
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@esskar: scheint auch zu gehen:
Code: (dl )
1
2
3
4
5
6
7
mysql> SELECT * FROM tbl_Test1 JOIN tbl_Test2 ON tbl_Test1.Phone LIKE CONCAT(tbl_Test2.PhoneLike,'%');
+------+--------+------+----------+-----------+
| ID | Phone | ID | Vorname | PhoneLike |
+------+--------+------+----------+-----------+
| 1 | 123456 | 1 | Teutales | 1234 |
+------+--------+------+----------+-----------+
1 row in set (0.00 sec)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Teutales
 2007-01-10 11:46
#35074 #35074
User since
2006-03-21
47 Artikel
BenutzerIn
[default_avatar]
Hey, vielen Dank. CONCAT war das Stichwort... Das Wort hätte gerreicht, Renee... ;) Aber superklasse deine ausführliche Antwort.

Da ich in diesem Projekt keine mySQL-Datenbank einsetze(n darf) sondern den ASA9 von Sybase: da gibts kein CONCAT - aber Google und euch sei dank...
suche nach: Sybase CONCAT
Ergebnis: Bei Sybase wird das einfachst mit dem '+' gemacht, sprich: IPtoGS.PhoneNumberLike+'%'
<< >> 5 Einträge, 1 Seite



View all threads created 2007-01-10 11:06.