8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

我可以对参加研讨会的人员创建一个查询,具有多对多关系,显示有多少个共同的研讨会的矩阵吗?

AlgorithmAce 3月前

49 0

我正在使用 MS Access 2016,我有一个访客表、一个研讨会表和一个链接参加表。我想查询这个表并得到一个数字矩阵,显示每个数字之间的关系......

我使用的是 MS Access 2016,我有一张访客表、一张研讨会表和一张链接出席表。我想查询这些表,并得到一个数字矩阵,以双向表格的形式显示每个表之间的关系。我想要的数字是它们有多少个共同的研讨会。

我想要实现的目标的例子
example of what I'm trying to achieve

我已经使用 vba 和一些糟糕的报告结构完成了此操作...现在用户想要过滤和更改内容。我希望可以将其作为查询来执行。我是 SQL 新手,所以希望有人可以在这里为我指明正确的方向。使用交叉表查询是否可行?我似乎找不到我需要的示例。

我迄今为止的尝试却很遗憾地失败了。

转换 Count(tblAttending.WorkshopID) 作为 CountOfWorkshopIDSELECT tblAttending.VisitorID,tblVisitors2.NameFROM tblAttending INNER JOIN tblVisitors2 ON tblAttending.VisitorID = tblVisitors2.VisitorIDGROUP BY tblAttending.VisitorID,tblVisitors2.NamePIVOT tblAttending.VisitorID;

最终,我决定这么做...

TRANSFORM nz(Sum(visitingpairs.CommonWorkshop))+0 AS SumOfCommonWorkshopSELECT visitingpairs.VisitorName1FROM (SELECT V1.VisitorID AS VisitorID1, V1.Name AS VisitorName1, V2.VisitorID AS VisitorID2, V2.Name AS VisitorName2, Nz(Count(A.WorkshopID),0) AS CommonWorkshopFROM (tblAttending AS A INNER JOIN tblVisitors AS V1 ON A.VisitorID = V1.VisitorID) INNER JOIN (tblAttending AS B INNER JOIN tblVisitors AS V2 ON B.VisitorID = V2.VisitorID) ON A.WorkshopID = B.WorkshopIDGROUP BY V1.VisitorID, V1.Name, V2.VisitorID, V2.Name) AS visitingpairsGROUP BY访问对。访客姓名1PIVOT 访问对。访客姓名2;

帖子版权声明 1、本帖标题:我可以对参加研讨会的人员创建一个查询,具有多对多关系,显示有多少个共同的研讨会的矩阵吗?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由AlgorithmAce在本站《vba》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我正在使用 expo 测试我的 React Native 应用程序,当使用 iPhone 进行测试时,所有按钮均无响应。它在 Android 上完全成功,其他功能在 iPhone 上也适用...

    我正在使用 expo 测试我的 React Native 应用程序,当使用 iPhone 进行测试时,所有按钮均无响应。它在 Android 上完全成功,其他功能在 iPhone 上也有效。我有一个可以读取数据的扫描仪。您如何解决此问题?如果我将其部署到生产中,这个问题还会继续存在吗?

    这是我的 App.js 文件。

    // App.js
    
    import React from 'react';
    import { NavigationContainer } from '@react-navigation/native';
    import { createStackNavigator } from '@react-navigation/stack';
    import BarcodeScannerScreen  from './BarcodeScanner.js';
    import ProfileScreen from "./views/ProfileScreen"
    import BathroomSelectionScreen from "./views/InClubScreens/BathroomSelectionScreen.js"
    import ClubDetails from "./views/ClubSelectionScreens/ClubDetails.js"
    import ClubMain from "./views/ClubSelectionScreens/ClubMain.js"
    import BarSelection from './views/DrinkSelectionScreens/BarSelection.js'
    import DrinkMenu from './views/DrinkSelectionScreens/DrinkMenu.js'
    import DrinkSelection from './views/DrinkSelectionScreens/DrinkSelection.js' 
    import BathroomList from "./views/InClubScreens/BathroomList.js"
    import Checkout from './views/DrinkSelectionScreens/Checkout.js'
    import { MyProvider } from './store/context';
    import { StripeProvider } from '@stripe/stripe-react-native';
    import { SafeAreaView, StyleSheet } from 'react-native';
    
    
    const Stack = createStackNavigator();
    
    export default function App() {
      return (
      <SafeAreaView style={styles.container}>
        <StripeProvider
          publishableKey="pk_test_51LlDznHYav5iWqq6j2SnnvtwAZXvha9jZERJeilcJeRtpFoZ6eu21ZjiTGun7vvstGLaWsL4FwpsoQ1X25MXxM4W00dzk1zCx9"
          //urlScheme="your-url-scheme" // required for 3D Secure and bank redirects
          //merchantIdentifier="merchant.com.{{YOUR_APP_NAME}}" // required for Apple Pay
        >
        <MyProvider>
            <NavigationContainer>
          <Stack.Navigator initialRouteName="Scanner">
            <Stack.Screen name="Scanner"  options= {{headerShown:false}} component={BarcodeScannerScreen} />
            <Stack.Screen options={{
              headerStyle: {
                backgroundColor: '#4F47C7',
              },
              headerTitleStyle: {
                fontWeight: 'bold',
              },
            }} headerStyle name="Profile Creation" component={ProfileScreen}/>
            <Stack.Screen name="Bathroom Selection" component={BathroomSelectionScreen} />
            <Stack.Screen name="Club Details" component={ClubDetails} options={{
              title: '',
            }} />
            <Stack.Screen name="Club Main" component={ClubMain}  options={({ route }) => ({ title: route.params.name })} />  
            <Stack.Screen name="Bar Selection" component={BarSelection} />   
            <Stack.Screen name="Drink Menu" component={DrinkMenu} />  
            <Stack.Screen name="Checkout" component={Checkout} />  
            <Stack.Screen name="Drink Selection" component={DrinkSelection} 
            options= {{headerShown:false}}/>    
            <Stack.Screen name="Bathroom List" component={BathroomList} /> 
          </Stack.Navigator>
        </NavigationContainer>
        </MyProvider>
        </StripeProvider>
      </SafeAreaView>
      );
    }
    const styles = StyleSheet.create({
      container:{
        flex:1,
        justifyContent:'center',
      }
    })
    

    这是登陆屏幕的代码。扫描仪功能可以工作,并且可以导航,但 onPress 在 Iphone 上不起作用。在 android 上可以成功运行

    // screens/HomeScreen.js
    
    import React, { useState, useContext, useEffect } from 'react';
    import { View, TextInput, Button, Text, StyleSheet, TouchableOpacity, Dimensions } from 'react-native';
    import { BarCodeScanner } from 'expo-barcode-scanner';
    import { useNavigation } from '@react-navigation/native';
    import { MyContext,MyProvider } from './store/context';
    import Ionicons from '@expo/vector-icons/Ionicons';
    import service from './api/customer'
    import { Alert } from "react-native";
    
    export default function HomeScreen() {
      const [hasPermission, setHasPermission] = useState(null);
      const {state, clear,load} = useContext(MyContext);
      const [scanned, setScanned] = useState(false);
      const [inputCode, setInputCode] = useState('');
      const navigation = useNavigation();
    
      useEffect(() => {
        (async () => {
          const { status } = await BarCodeScanner.requestPermissionsAsync();
          setHasPermission(status === 'granted');
        })();
      }, []);
    
      const handleBarCodeScanned = ({ type, data }) => {
        setScanned(true);
        console.log(data)
        service.getVenueInfo(data)
        // You can perform additional checks on the barcode data if needed
        .then(jsonData => {
          console.log(jsonData)
          if(jsonData.data.venue){ //jsonData.action.payload.data.venue
            load(jsonData)
            navigation.navigate('Club Main', { name: state.venue.venue_name })
          }
          else{
            setScanned(false);
          }
          
        })
        .catch(error => {console.log(error)
            setScanned(false);
        });
        //navigation.navigate('Club Main', { barcodeData: data });
      };
    
      const handleInputChange = (text) => {
        setInputCode(text);
      };
    
      const handleTextInputSubmit = () => {
        // You can perform additional checks on the input code if needed
        navigation.navigate('Result', { barcodeData: inputCode });
      };
    
      return (
        <View style={styles.container}>
          <BarCodeScanner
            onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
            style={StyleSheet.absoluteFillObject}
          />
          <View style={styles.box}>
            <View style={[styles.corner, styles.topLeft]} />
            <View style={[styles.corner, styles.topRight]} />
            <View style={[styles.corner, styles.bottomLeft]} />
            <View style={[styles.corner, styles.bottomRight]} />
          </View>
           <TouchableOpacity style={styles.actionButton} onPress={() => navigation.goBack()}>
           <Ionicons name="document-text" onPress={()=>{Alert.alert('Ive been pressed')}}  size={32} color="white" />
          </TouchableOpacity>
        </View>
      );
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
      },
      actionButton: {
        position: 'absolute',
        bottom: 40, // Adjust this value to set the distance from the bottom
        right: 40, // Adjust this value to set the distance from the right
        width: 60,
        height: 60,
        borderRadius: 30, // Half of the width and height to make it circular
        backgroundColor: '#4F47C7', // Your desired background color
        justifyContent: 'center',
        alignItems: 'center',
        elevation: 5, // Add elevation for a slight shadow effect (Android)
        shadowColor: '#000', // Shadow color (iOS)
        shadowOffset: { width: 0, height: 2 }, // Shadow offset (iOS)
        shadowOpacity: 0.8, // Shadow opacity (iOS)
        shadowRadius: 3, // Shadow radius (iOS)
      },
      scanner: {
        width: 300,
        height: 300,
        marginTop: 20,
      },
      input: {
        borderWidth: 1,
        borderColor: 'gray',
        borderRadius: 5,
        width: 200,
        height: 40,
        marginTop: 20,
        padding: 8,
      },
      overlay: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        borderWidth: 2,
        borderColor: 'white',
      },
      box: {
        position: 'absolute',
        justifyContent:'center',
        width: Dimensions.get('window').width * 0.6,
        height: Dimensions.get('window').height * 0.3,
        top: (Dimensions.get('window').height * 0.6 - Dimensions.get('window').height * 0.081) / 2,
        left: (Dimensions.get('window').width - Dimensions.get('window').width * 0.6) / 2,
      },
      corner: {
        position: 'absolute',
        width: 25,
        height: 25,
        borderWidth: 6,
        borderColor: 'white',
      },
      topLeft: {
        top: 0,
        left: 0,
        borderRightWidth: 0,
        borderBottomWidth: 0,
      },
      topRight: {
        top: 0,
        right: 0,
        borderLeftWidth: 0,
        borderBottomWidth: 0,
      },
      bottomLeft: {
        bottom: 0,
        left: 0,
        borderRightWidth: 0,
        borderTopWidth: 0,
      },
      bottomRight: {
        bottom: 0,
        right: 0,
        borderLeftWidth: 0,
        borderTopWidth: 0,
      }
    });
    
    
    

    如果有帮助的话我也可以添加配置文件

  • snow 3月前 0 只看Ta
    引用 2

    我在 iPhone 上收到了一条来自一个我不认识的号码的短信,奇怪的是没有对话线程。唯一显示的文字看起来像是从我的手机回复中发来的...

    我在 iPhone 上收到了一条来自一个我不认识的号码的短信,奇怪的是没有对话线索。唯一显示的文字看起来像是我手机回复的,在“嗨”后面加了一个表情符号。这很奇怪,因为看起来像是我回复的,但我没有回复。而且在这条“嗨”之前没有先前的消息,只有我发来的“嗨”。

    是否可以向某人发送短信并使其看起来像是他们回复了这个未知号码?

    enter image description here

  • 在我的终端上显示相同的选项 \'iPhone\' 和 \'iPhone\'。而这应该是 \'iPhone\' 和 \'Speaker\'。如果找到解决方案,请回复。这仅适用于...

    在我的终端上显示相同的选项 \'iPhone\' 和 \'iPhone\'。而这应该是 \'iPhone\' 和 \'Speaker\'。如果找到解决方案,请回复。只有当我选择扬声器并再次返回 iPhone 时才会出现这种情况。我是否严格遵守 AVRoutePickerView 的预期行为?

  • 所有 onPresses 均无响应。当我在 expo 上运行此程序时,按钮无响应。snack 没问题。android 也没问题

  • 哪个 onPress 不起作用?我看到你有两个 onPress 操作,都正常工作。在测试小吃上

    <TouchableOpacity style={styles.actionButton} onPress={() => navigation.goBack()}>
        <Ionicons name="document-text" onPress={()=>{Alert.alert('Ive been pressed')}}  size={32} color="white" />
    </TouchableOpacity>
    

    零食链接 https://snack.expo.dev/@rudiahmad/testing

  • 这听起来确实有点吓人——我以前从未见过这样的文字。但这是一个编程问题吗?你可能会得到更好的答复

  • 这对你有用吗:

    transform sum(t.cnt)
    select PersonRow
    from (
    select count(iif(a.WorkshopID<>b.WorkshopID, 1, null)) as Cnt, a.LastName as PersonRow, b.LastName as PersonColumn
    from (
    select av.VisitorID, av.LAstName, aa.WorkshopID
    FROM tblVisitor av
         inner join
         tblAttending aa
         on av.VisitorId=aa.VisitorID
    ) a
    inner join 
    (
    select av.VisitorID, av.LAstName, aa.WorkshopID
    FROM tblVisitor av
         inner join
         tblAttending aa
         on av.VisitorId=aa.VisitorID
    ) b
    on a.VisitorId<>b.VisitorId
    group by a.LastName, b.LastName )t
    group by PersonRow pivot PersonColumn
    

    测试很困难,因为您没有提供与所需输出相匹配的测试数据。

  • 您说您有一种方法可以生成所需的输出?为什么它不能满足其他要求?将示例数据显示为格式化的文本表。我怀疑仅靠 SQL 能否实现。

返回
作者最近主题: