Schrift
[thread]3392[/thread]

Mehrere Zeilen auswählen: mit versch. Suchmustern

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
pktm
 2004-01-05 18:32
#35867 #35867
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Kann man auch bei der WHERE - Klausel meherere Werte angeben?
Ich würde nämlich gerne um den Transfer-Aufwand MySQL<->Script möglichst gering zu halten gerne mehrere Zeilen aus meiner DB gleichzeitig auswählen, wobei die immer unterschiedliche Schlüssel enthalten.
Also hier meine DB:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
# --------------------------------------------------------
#
# Table structure for table 'template'
#

CREATE TABLE template (
id int(255) NOT NULL auto_increment,
name varchar(255) NOT NULL,
titel varchar(255) NOT NULL,
template text NOT NULL,
PRIMARY KEY (id)
);

Ich möchte jetzt 12 Templates auslesen, die alle verschiedene name haben.
Dafür bracuhe ich meines Wissens entweder einen Select auf die ganze Datenbank oder 12 einzelne Selects. Beides sehr aufwendig.
Kann man den Aufwand irgendwie minimieren?
Es gibt zwar eine UNITED (?) - Klausel, die wird aber von meiner DB und von der meiner Kunden noch nicht unterstzützt (erst ab MySQL Version 4.0).
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2004-01-05 18:36
#35868 #35868
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Klar
Code: (dl )
SELECT * FROM tabelle WHERE spalte1='trallala' AND spalte2='hollido' AND NOT spalte2='';


Edit: Beschreib doch bitte dein problem näher.
Du kannst auch mit mehreren Tabellen arbeiten

Code: (dl )
SELECT * FROM tabelle1 AS t1, tabelle2 AS t2, tabelle3 AS t3 WHERE t1.spalte1='trallala' AND t2.spalte1='haumichblau' AND NOT t3.anderespalte='nixda';


Gruß Alex\n\n

<!--EDIT|format_c|1073320764-->
renee
 2004-01-05 18:46
#35869 #35869
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
man kann logischerweise auch mit OR arbeiten:
Code: (dl )
SELECT * FROM templates WHERE name = 'template1' OR name = 'template2';
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/
pktm
 2004-01-05 19:11
#35870 #35870
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Werde das mal ausprobeiren.
Nähere Beschreibung des Problems:
Ich würde gerne dashier zusammenfassen:
Code: (dl )
1
2
3
4
5
6
7
8
    my $vnav_template = [];
push @{ $vnav_template }, main::get_template_bn('vnav_head');
push @{ $vnav_template }, main::get_template_bn('vnav_item');
push @{ $vnav_template }, main::get_template_bn('vnav_foot');
my $hnav_template = [];
push @{ $hnav_template }, main::get_template_bn('hnav_head');
push @{ $hnav_template }, main::get_template_bn('hnav_item');
push @{ $hnav_template }, main::get_template_bn('hnav_foot');

get_template_bn:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub get_template_bn {
my $seitenname = shift;
my $returnvalue = undef;
{ # cmd
my $cmd = "SELECT template FROM template WHERE name='$seitenname'";
my $sth = $dbh->prepare($cmd) || die $dbh->errstr;
if( my $rv = $sth->execute ){
$returnvalue = join"",@{$sth->fetchrow_arrayref()};
$sth->finish();
}else{
die "Konnte \"$seitenname\" nicht aus seiten-Datenbank lesen: " . $dbh->errstr;
}
} # /cmd
return $returnvalue;
} # get_Template_bn
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2004-01-05 19:43
#35871 #35871
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
OK
da gibts die IN Klausel ist wie ein haufen OR hintereinander. Das sollte dir Funktion erfüllen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my @seiten= qw/vnav_head vnav_item vnav_foot hnav_head hnav_item hnav_foot/;
@seiten = join ',', map {$_ = "'$_'";} @seiten;
my $sql = qq!
SELECT template FROM template WHERE name IN(@seiten)
!;
my $sth = $dbh->prepare($sql) or die DBI::errstr;
$sth->execute or die DBI::errstr;
while ((my $template) = $sth->fetchrow_array()) {
print $template,"\n";
}
$sth->finish();
$dbh->disconnect();


Ungetestet

Gruß Alex\n\n

<!--EDIT|format_c|1073324679-->
ptk
 2004-01-05 20:37
#35872 #35872
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=format_c,05.Jan..2004, 18:43]OK
da gibts die IN Klausel ist wie ein haufen OR hintereinander. [/quote]
Welche Datenbankengine? In der MySQL-Doku finde ich nichts dazu.
pktm
 2004-01-06 14:15
#35873 #35873
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
No, sorry aber in der Doku von MySQL staht wirklich nichts zu einer IN - Klausel (schade eigentlich).
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2004-01-06 16:06
#35874 #35874
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Kann net sein. Die habe ich selbst schon in nem Online Shop verwendet. mom ich geh suchen.....
format_c
 2004-01-06 16:20
#35875 #35875
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ok ich gebe zu es ist keine Klausel sondern ein operator.
Ha ich wusste es doch. Ich gebe zu ich hab auch ne weile gebraucht um das zu finden.
Kommt wahrscheinlich daher, dass ich diesen Operator nicht aus der Doku kenne.
Hier der Link: http://www.mysql.de/doc/de/Comparison_Operators.html#IDX1097

Gruß Alex
ptk
 2004-01-07 20:21
#35876 #35876
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Und moeglicherweise schneller als eine OR-Kette. Werde ich demnaechst mal ausprobieren :-)
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2004-01-05 18:32.