Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3723[/thread]

esskar in der SQL welt (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
renee
 2006-10-20 16:21
#34717 #34717
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir mal http://www.tinohempel.de/info/info/datenbank/operation.htm an!
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/
nepos
 2006-10-20 16:25
#34718 #34718
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
LEFT und RIGHT kannst du nutzen, wenn in einer der beiden zu joinenden Tabellen eventuell keine passenden Daten vorhanden sind. Beim normalen Join fallen die Datensaetze komplett unter den Tisch. Bei LEFT/RIGHT werden einfach die entsprechenden Spalten mit NULL zurueckgeliefert.
pq
 2006-10-20 17:17
#34719 #34719
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
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
39
40
41
42
43
44
45
46
47
48
mysql> select * from a;
+------+------+
| a_id | name |
+------+------+
| 1 | foo |
| 2 | bar |
| 4 | baz |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from b;
+------+--------------------+
| b_id | descr |
+------+--------------------+
| 2 | descr for bar |
| 3 | descr for whatever |
| 4 | descr for baz |
+------+--------------------+
3 rows in set (0.01 sec)

mysql> select * from a INNER JOIN b on a.a_id=b.b_id;
+------+------+------+---------------+
| a_id | name | b_id | descr |
+------+------+------+---------------+
| 2 | bar | 2 | descr for bar |
| 4 | baz | 4 | descr for baz |
+------+------+------+---------------+
2 rows in set (0.01 sec)

mysql> select * from a LEFT JOIN b on a.a_id=b.b_id;
+------+------+------+---------------+
| a_id | name | b_id | descr |
+------+------+------+---------------+
| 1 | foo | NULL | NULL |
| 2 | bar | 2 | descr for bar |
| 4 | baz | 4 | descr for baz |
+------+------+------+---------------+
3 rows in set (0.00 sec)

mysql> select * from a RIGHT JOIN b on a.a_id=b.b_id;
+------+------+------+--------------------+
| a_id | name | b_id | descr |
+------+------+------+--------------------+
| 2 | bar | 2 | descr for bar |
| NULL | NULL | 3 | descr for whatever |
| 4 | baz | 4 | descr for baz |
+------+------+------+--------------------+
3 rows in set (0.01 sec)
\n\n

<!--EDIT|pq|1161350595-->
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
esskar
 2006-10-20 17:47
#34720 #34720
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aha, danke!
esskar
 2006-12-15 05:33
#34721 #34721
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
moin,

die story geht weiter.
ich geh von folgendem aus:
ich hab ne tabelle sachen, in der sachen gespeichert werden. jede sache hat eine eindeutige sach_id.

jetzt hab ich eine tabelle sachen_bewertung, der kunden eine sache bewerten können. pro bewertung gibt es eine spalte mit
sach_id, kunde_id, bewertung (zahl zwischen 0 und 100).

ich hätte jetzt gerne die 10 sachen, deren bertung im schnitt am höchsten ist.


die kunden können die sachen kaufen. dafür gibt es ne tabelle sache_gekauft. pro kauf gibt es eine zeile mit sach_id, kunde_id

ich hätt jetzt gerne die 10 sachen, die am häufigsten gekauft wurden + wie oft sie dann auch gekauft wurden.


ist vielleicht etwas viel verlangt. es ist jetzt hier aber schon 7:32 Uhr und ich hab noch kein auge zu gemacht. vielleicht erbarmt sich ja jemand im laufe des tages.
danke.
MartinR
 2006-12-15 08:06
#34722 #34722
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Moin auch,

vieleicht so?

Code: (dl )
1
2
3
4
5
6
7
8
9
SELECT
id, count(id) as anzahl, sum(bewertung) as 'bew', sum(bewertung) / count(id) as durchschnitt
FROM
bewertung
GROUP BY
id
ORDER BY
durchschnitt desc
LIMIT 10


... und Deine zweite Abfrage ist ebenfalls ein 'Count'
renee
 2006-12-15 09:32
#34723 #34723
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ist in sache_gekauft auch die Anzahl abgespeichert?
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/
esskar
 2006-12-15 09:47
#34724 #34724
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=renee,15.12.2006, 08:32]ist in sache_gekauft auch die Anzahl abgespeichert?[/quote]
jede person kann eine sache nur einmal kaufen
renee
 2006-12-15 09:52
#34725 #34725
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ungetestet: [sql]SELECT COUNT(*) AS anzahlFROM sache_gekauft ORDER BY anzahl DESC LIMIT 10[/sql]
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/
pq
 2006-12-15 10:52
#34726 #34726
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=MartinR,15.12.2006, 07:06]
Code: (dl )
sum(bewertung) / count(id) as durchschnitt
[/quote]
sollte da nicht einfach ein AVG(bewertung) reichen?
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
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2006-09-26 10:47.