Schrift
[thread]3336[/thread]

MySQL Abfragen über mehrere Tabellen



<< >> 7 Einträge, 1 Seite
jan10001
 2003-09-18 12:25
#33515 #33515
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tabelle1
id
standort

tabelle2
id
standort_id
daten


Die Abfrage:

SELECT b.daten
FROM tabelle1 a, tabelle2 b
WHERE a.standort=$gesucht
and b.standort_id=a.id

($gesucht = gesucherter Standort)
Ronnie
 2003-09-18 16:01
#33516 #33516
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=Ronnie,18.09.2003, 10:32]Wenn man z.B. 'M' als Suchbegriff eingibt, hole ich mir in einer ersten Abfrage sämtliche IDs von Standorten die mit 'M' anfangen und verwende diese dann um meine Suchabfrage zu erweitern s.o.[/quote]
Okay, das war doof. Man kann ja auch seine WHERE-Clauses nach klammern.

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
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh;
my $such_standort = 'Bin';

$dbh = DBI->connect ("DBI:mysql:host=192.168.0.1;database=mitarbeiter",
                    "me", "secret", {PrintError => 0, RaiseError => 1});

&mitarbeiter_suchen();

$dbh->disconnect();
exit(0);

#
# Ab hier: Subroutinen
#

sub mitarbeiter_suchen {
 my $sth = $dbh->prepare ("
  SELECT mitarbeiter.Nachname, mitarbeiter.Vorname, standorte.Standort, gesellschaften.Gesellschaft
FROM  mitarbeiter
JOIN  standorte, gesellschaften
WHERE mitarbeiter.Standort = standorte.SID
AND mitarbeiter.Gesellschaft = gesellschaften.GID
AND (standorte.Standort LIKE '$such_standort%'
AND mitarbeiter.Nachname LIKE 'Ne%')
                          ");
 $sth->execute();
 while (my ($nachname, $vorname, $standort, $gesellschaft) = $sth->fetchrow_array()) {

   print "$nachname,\t$vorname,\t$standort,\t$gesellschaft\n";

 }
 $sth->finish();
}


Kann MySQL mittlerweile eigentlich Sub-Selects?\n\n

<!--EDIT|Ronnie|1063886525-->
pq
 2003-09-18 18:04
#33517 #33517
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hmm, ich verschiebe das mal, denn ich seh absolut keinen bezug zu CGI...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Ronnie
 2003-09-18 11:46
#33518 #33518
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo, ich habe folgendes Problem. Ich hatte eine Datenbank in der sich ein Feld häufig wiederholt hat -> Standort. Also habe ich das Feld gruppiert in eine neue Tabelle geschrieben und in meine Ursprungstabelle die IDs zur Zuordnung. Würde MySQL Views erlauben könnte ich jetzt einen View erzeugen der aussieht wie meine ursprüngliche Tabelle. In meiner Applikation soll es auch als nur eine Tabelle dargestellt werden. Dies bekomme ich auch durch eine angepasste SQL-Abfrage hin, aber wie gestalte ich meine Suchabfrage? Der Anwender kann einfach aus einer Dropdownliste das Feld wählen (in diesem Fall: Standort) ?! Wie behandele ich diesen Sonderfall?
Ronnie
 2003-09-18 12:32
#33519 #33519
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo Jan, soweit war ich durchaus:

Quote
SELECT mitarbeiter.Nachname, mitarbeiter.Vorname, standorte.Standort, gesellschaften.Gesellschaft
FROM `mitarbeiter`
JOIN `standorte`, `gesellschaften`
WHERE mitarbeiter.Standort = standorte.SID
AND mitarbeiter.Gesellschaft = gesellschaften.GID
AND mitarbeiter.Standort IN ( 1, 14 )


Bin mittlerweile sogar einen Schritt weiter. Wenn man z.B. 'M' als Suchbegriff eingibt, hole ich mir in einer ersten Abfrage sämtliche IDs von Standorten die mit 'M' anfangen und verwende diese dann um meine Suchabfrage zu erweitern s.o.

Was mich so stört ist das dies meine Applikationslogik und den SQL-Teil mächtig aufbläht. Wenn ich auf einen View zugreifen könnte der obige Abfrage abbildet, könnte ich mir die Änderungen in meinem Code sparen.
jan10001
 2003-09-18 17:51
#33520 #33520
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
Kann MySQL mittlerweile eigentlich Sub-Selects?

Bisher noch nicht, ist aber geplant.
Ronnie
 2003-09-18 18:23
#33521 #33521
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Quote
hmm, ich verschiebe das mal, denn ich seh absolut keinen bezug zu CGI...

Sorry, das stimmt.
<< >> 7 Einträge, 1 Seite



View all threads created 2003-09-18 12:25.