kontrollstruktur für idente - aber unbekannte - spalteneinträge identifizieren?
hi@all!
also jetzt hab ich mich schon im betreff schwergetan, jetzt will ich das problem noch erklären
ok. los gehts:
ERSTER TEIL:
also in der spalte 'bid' einer tabelle 'abcd' stehen ids von einer anderen tabelle, sie identifizieren dort diverse parameter (gleichgültig für diese frage). obwohl ich das nicht mag, versuche ichs mal mit einem 'pseudocode', vielleicht hilft das zu sagen, was ich will.
ZWEITER TEIL:
wenn ich solche identen finde, kann ich die zählen auch, wenn ja wie
also jetzt hab ich mich schon im betreff schwergetan, jetzt will ich das problem noch erklären

ok. los gehts:
ERSTER TEIL:
also in der spalte 'bid' einer tabelle 'abcd' stehen ids von einer anderen tabelle, sie identifizieren dort diverse parameter (gleichgültig für diese frage). obwohl ich das nicht mag, versuche ichs mal mit einem 'pseudocode', vielleicht hilft das zu sagen, was ich will.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?
if ($bid ist ident) /*das ist mein wesentliches probl.: wie findet man idente werte einer spalte,
wenn man nur weiss, dass es zahlen sind aber nicht welche*/
{
echo'Nur 1x "bid" zeigen, bzw. nur 1x die bezeichnung der spalte
(andere spalte, die mit "bid" identifiziert wird),
die bid ergibt, weil es nur als überschrift benötigt wird';
}
else
{
echo'Es gibt keine identen Veranstaltungen!';
}?>
|
ZWEITER TEIL:
wenn ich solche identen finde, kann ich die zählen auch, wenn ja wie
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »webmastersworld« (14. November 2006, 00:44)
Meinst du sowas:
Tab 1: Tab1
Feld: bid
Tab2: Tab2
Feld: ids
bsp. bid=20 (die mußt du natürlich vorher irgendwie als Ansatz bekommen)
=> Ergebniss sind alle zugehörigen ids in Tabelle :efgh
SELECT Tab1.bid, Tab2.ids
FROM Tab1 LEFT JOIN Tab2 ON Tab1.bid = Tab2.ids
WHERE (((Tab1.bid)="20"));
irgendwie kann man da auch noch die count-Funktion von sql einarbeiten und erhält die Anzahl der gefundenen ids
oder in php:
mysql_affected_rows() = Anzahl der gefundenen Datensätze
Tab 1: Tab1
Feld: bid
Tab2: Tab2
Feld: ids
bsp. bid=20 (die mußt du natürlich vorher irgendwie als Ansatz bekommen)
=> Ergebniss sind alle zugehörigen ids in Tabelle :efgh
SELECT Tab1.bid, Tab2.ids
FROM Tab1 LEFT JOIN Tab2 ON Tab1.bid = Tab2.ids
WHERE (((Tab1.bid)="20"));
irgendwie kann man da auch noch die count-Funktion von sql einarbeiten und erhält die Anzahl der gefundenen ids
oder in php:
mysql_affected_rows() = Anzahl der gefundenen Datensätze
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ospx« (14. November 2006, 14:35)
thx ich werde das abends versuchen, mal sehen, ob ich das realisieren kann 
EDIT:
wieso ="20" ??? bitte erkläre mir das

EDIT:
wieso ="20" ??? bitte erkläre mir das
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »webmastersworld« (14. November 2006, 13:49)
die 20 soll nur als ein Beispiel für eine bid stehen. Soll heißen, du müßtest also vorher zumindest die entsprechende bid, für die du die zugehörigen ids haben willst, kennen/ermitteln und mit der 20 austauschen (z.B durch eine Variable in php).
Ich ging davon aus, dass deine 'bid' irgendeine ID sein soll. Das ist aber eher unwichtig. Die 20 ist ein Stellvertreter für irgendwelche bid-Werte, also auch Strings usw.
Ich ging davon aus, dass deine 'bid' irgendeine ID sein soll. Das ist aber eher unwichtig. Die 20 ist ein Stellvertreter für irgendwelche bid-Werte, also auch Strings usw.
verstehe thx, eine ID - Range (sowas wie bid <=20000 ) ist für meine zwecke viel besser (irgendwie eine while() oder foreach() dazu halt
), jetzt hab ich theoretisch den einblick, wenn ich das heute noch zeitlich schaffe, versuche ich mal das prakt. umzusetzen, bin schon extrem neugierig, schreibe dir dann ob und wie ichs gemacht habe, thx für die infos
), jetzt hab ich theoretisch den einblick, wenn ich das heute noch zeitlich schaffe, versuche ich mal das prakt. umzusetzen, bin schon extrem neugierig, schreibe dir dann ob und wie ichs gemacht habe, thx für die infos
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »webmastersworld« (14. November 2006, 19:57)
Halt , stop ich glaube da ist ein Mißverständniss
ich meinte zusammengehörige ID's.
Also 1. Tabelle Felder
irgendwas | nochwas | bID
haupt1 xxy 20
haupt2 cde 21
2. Tabelle Felder:
ids | parameter1 | parameter2 ...
20 a3 b5
20 c7 d2
20 x9 y4
21 s3 w3
21 a3 c8
-------------------------------------------------------------------
mit obiger Abfrage bekommst du alle Datensätze der 2.Tabelle mit ids=20
willst du mehrere ids- Werte abfragen, müßte das sql-statement angepaßt oder für jede ids ausgeführt werden.
das werden einige sql-cracks vielleicht als unprofessionell bezeichnen, aber du könntest die ids-werte mit einem einfachen weiteren sql-statement abfragen, in php auswerten und den teil, mit dem du weiter willst im obigen statement abfragen. in kleineren Datensatzmengen gänge auch eine foreachschleife, in der dann die entsprechenden ids anstatt der 20 als werte eingesetzt werden.
Aber vorsicht, ich kenne dein system nicht und hab das mal eben so hingeworfen. Das ganze ist nicht gerade resourcen-sparend aufgezogen, bzw achte auf die Mengen der zu verarbeitenden Datensätze (du wirst es wissen, nur falls nicht, sei es nochmal angemerkt)
geht in der Abfrage so nicht, da kommt Müsli raus, in obiger Abfrage geht glaub ich nur '=' , es sei denn du hast ein ganz spezielles Design
Zitat
bid <=20000
ich meinte zusammengehörige ID's.
Also 1. Tabelle Felder
irgendwas | nochwas | bID
haupt1 xxy 20
haupt2 cde 21
2. Tabelle Felder:
ids | parameter1 | parameter2 ...
20 a3 b5
20 c7 d2
20 x9 y4
21 s3 w3
21 a3 c8
-------------------------------------------------------------------
mit obiger Abfrage bekommst du alle Datensätze der 2.Tabelle mit ids=20
willst du mehrere ids- Werte abfragen, müßte das sql-statement angepaßt oder für jede ids ausgeführt werden.
das werden einige sql-cracks vielleicht als unprofessionell bezeichnen, aber du könntest die ids-werte mit einem einfachen weiteren sql-statement abfragen, in php auswerten und den teil, mit dem du weiter willst im obigen statement abfragen. in kleineren Datensatzmengen gänge auch eine foreachschleife, in der dann die entsprechenden ids anstatt der 20 als werte eingesetzt werden.
Aber vorsicht, ich kenne dein system nicht und hab das mal eben so hingeworfen. Das ganze ist nicht gerade resourcen-sparend aufgezogen, bzw achte auf die Mengen der zu verarbeitenden Datensätze (du wirst es wissen, nur falls nicht, sei es nochmal angemerkt)
ah da haben wir uns missverstanden.
ich erklär nochmal, was ich wollte:
also in tabelle 1 stehen alle vorträge, die jemand abhält ein vortrag mit preisspalte, ortspalte, zeitspalte, vortragenderspalte ...
jeder dieser vorträge erhält in tabelle1 eine ID (autoincremented).
_______
jetzt melden sich per mail leute an mit mail und geben ihre persönlichen daten ein, diese mailangaben werden in tabelle2 gespeichert. der vortrag für den sich leute anmelden wird in der spalte 'bid' in tabelle2 gespeichert. so weit so klar.
wenn ich jetzt dem user dieses systems eine choicemöglichkeit aller seiner anmeldungen geben will, muss ich 'bid' in tabelle2 durchlaufen und schauen
1. wieviele bid sind ident +
2. mit welcher ID aus tabelle1 stimmen diese bid (also alle anmeldungen) überein.
dann will ich den vortrag 1x als überschrift zeigen + die zahl der identen bid cunten (also z.b. für den vortrag blabla meldeten sich bisher 10 teilnehmer an).
das wars was ich wollte
ich erklär nochmal, was ich wollte:
also in tabelle 1 stehen alle vorträge, die jemand abhält ein vortrag mit preisspalte, ortspalte, zeitspalte, vortragenderspalte ...
jeder dieser vorträge erhält in tabelle1 eine ID (autoincremented).
_______
jetzt melden sich per mail leute an mit mail und geben ihre persönlichen daten ein, diese mailangaben werden in tabelle2 gespeichert. der vortrag für den sich leute anmelden wird in der spalte 'bid' in tabelle2 gespeichert. so weit so klar.
wenn ich jetzt dem user dieses systems eine choicemöglichkeit aller seiner anmeldungen geben will, muss ich 'bid' in tabelle2 durchlaufen und schauen
1. wieviele bid sind ident +
2. mit welcher ID aus tabelle1 stimmen diese bid (also alle anmeldungen) überein.
dann will ich den vortrag 1x als überschrift zeigen + die zahl der identen bid cunten (also z.b. für den vortrag blabla meldeten sich bisher 10 teilnehmer an).
das wars was ich wollte
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Das hört sich so an, als ob ein paar mehr Tabellen sinnvoll sein könnten ??
die 5 Normalformen und Normalisierung von Datenbanken kennst du?
wenn nicht, schau es dir mal an:
ausführlich:
DSP
akademisch:
http://wwwcs.uni-paderborn.de/cs/ag-boet…k5n.html#K5_7_0
Aber wahrscheinlich hast du schon einen guten Ansatz gefunden (?). Es scheint zumindest so.
ich würde, das, was du willst in mind. 3, wahrscheinlich sogar 4 oder 5 Tabellen aufteilen
1. Tab Vorträge
2. Tab Teilnehmer
3. Tab Kreuztabelle ID-Vortrag | ID-Teilnehmer
4.Tab Referenten
ev. noch 5. ort etc, um redundanzen zu vermeiden
abgesehen davon scheint mir obiger Ansatz sehr passend für dein konzept
was ist denn eigentl dieses 'ident' oder identisch mit was?
irgendwie habe ich ne menge sql vergessen, aber was du willst, läßt sich perfecto in sql ausführen und du brauchst eigentlich gar nicht so viele foreach's und while's in php.
ich krame morgen nochmal nach. wenn du es vorher anders löst ist das top . lass es mich wissen. bin echt neugierig geworden, was du daraus machst. also bis demnächst - viel glück
die 5 Normalformen und Normalisierung von Datenbanken kennst du?
wenn nicht, schau es dir mal an:
ausführlich:
DSP
akademisch:
http://wwwcs.uni-paderborn.de/cs/ag-boet…k5n.html#K5_7_0
Aber wahrscheinlich hast du schon einen guten Ansatz gefunden (?). Es scheint zumindest so.
ich würde, das, was du willst in mind. 3, wahrscheinlich sogar 4 oder 5 Tabellen aufteilen
1. Tab Vorträge
2. Tab Teilnehmer
3. Tab Kreuztabelle ID-Vortrag | ID-Teilnehmer
4.Tab Referenten
ev. noch 5. ort etc, um redundanzen zu vermeiden
abgesehen davon scheint mir obiger Ansatz sehr passend für dein konzept
was ist denn eigentl dieses 'ident' oder identisch mit was?
irgendwie habe ich ne menge sql vergessen, aber was du willst, läßt sich perfecto in sql ausführen und du brauchst eigentlich gar nicht so viele foreach's und while's in php.
ich krame morgen nochmal nach. wenn du es vorher anders löst ist das top . lass es mich wissen. bin echt neugierig geworden, was du daraus machst. also bis demnächst - viel glück
naja 'ident' identisch bedeutet nix anderes, dass die vielen identen bid der tabelle2 mit einer ID in tabelle1 übereinstimmen müssen, sonst gäbe es ja den vortrag nicht. da der user die vorträge anlegt und vergangene löscht ändern sich natürlich die IDs in tabelle1 + demgemäß auch die bid der anmeldungen die in tabelle2 halt mehrfach ident vorkommen, weil sich ja mehr leutz zu einem vortrag (=ID in tabelle1) anmelden.
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »webmastersworld« (14. November 2006, 23:23)
ja man sollte sich nie 'mit der rechten hand am liken ohr kratzen wollen' 
anders gesagt: es ist ganz einfach gewesen
der user, der die vorträge erstellt, muss nur auswählen, welchen votrag er sehen will +
> ich habe die id aus tabelle 1,
dann lasse ich ein count AS (*) WHERE `bid` = '$id' in tabelle2 los ... und schon weiss ich die gesamtzahl aller anmeldungen zum jeweiligen vortrag
> dann lasse ich tabelle2 mit einer while - schleife durchlafen WHERE `bid` = '$id' + ich habe alle daten der angemeldeten auf einen blick
moral von der geschicht: warum kompliziert, wenns einfach auch geht, thx für die hilfe
+ gn8

anders gesagt: es ist ganz einfach gewesen
der user, der die vorträge erstellt, muss nur auswählen, welchen votrag er sehen will + > ich habe die id aus tabelle 1,
dann lasse ich ein count AS (*) WHERE `bid` = '$id' in tabelle2 los ... und schon weiss ich die gesamtzahl aller anmeldungen zum jeweiligen vortrag
> dann lasse ich tabelle2 mit einer while - schleife durchlafen WHERE `bid` = '$id' + ich habe alle daten der angemeldeten auf einen blick
moral von der geschicht: warum kompliziert, wenns einfach auch geht, thx für die hilfe
+ gn8
Im Leben gibt man nur Briefe auf, sonst nix!
www.realtype.org
www.realtype.org
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »webmastersworld« (15. November 2006, 01:39)


